小編給大家分享一下python3類中的Dog如何用來轉(zhuǎn)化,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,先為通城等服務建站,通城等地企業(yè),進行企業(yè)商務咨詢服務。為通城企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。Dog類是Animal的一個子類,主要講解三個裝飾器進行方法向?qū)傩缘霓D(zhuǎn)換。
轉(zhuǎn)換有兩個主要的好處:
一是調(diào)用沒有參數(shù)的方法時不再需要加括號,這樣的方法就可以當做屬性來看
二是這樣定義的屬性賦值時可以進行判斷,防止無效屬性的產(chǎn)生
這樣的轉(zhuǎn)換有兩種方式:
一種是通過@property裝飾器,這個裝飾器系列一共三個,如果只是想調(diào)用這個方法可以只使用@property這個裝飾器
一種是通過property函數(shù)
下面是一個例子,一些說明可以在最后面定義的print_dog方法中查看
class Dog(Animal): # 類的繼承 # 只使用@property裝飾器與普通函數(shù)做對比 def eating(self): print("I am eating") @property # 用這個裝飾器后這個方法調(diào)用就可以不加括號,即將其轉(zhuǎn)化為屬性 def running(self): if self.age >= 3 and self.age < 130: print("I am running") elif self.age > 0 and self.age <3: print("I can't run") else: print("please input true age") # 三種裝飾器,可以獲取、設置、刪除這樣定義的屬性 @property def country(self): return self._country # 注意這個屬性之前從來沒有定義過,是在下面的setter中定義的 @country.setter # 用 函數(shù)名.setter 的裝飾器 def country(self, value): # 設置這個屬性的值 self._country = value @country.deleter def country(self): print("The attr country is deleted") # 用property函數(shù)實現(xiàn)和裝飾器相同的功能 def get_city(self): return self._city def set_city(self, value): self._city = value def del_city(self, value): del self._city city = property(get_city, set_city, del_city, "where it is in") @staticmethod def print_dog(): print("這是Animal的一個子類,主要講解三個裝飾器進行方法向?qū)傩缘霓D(zhuǎn)換") print("類繼承,創(chuàng)建實例時仍要指定父類的普通屬性") print("@property裝飾器將方法轉(zhuǎn)化為屬性方式調(diào)用,此時的方法必須只有一個self參數(shù)") print("使用@property后可以看做一個屬性(country),用property函數(shù)可以達到相同的效果(city)") print("注:city中property第四個參數(shù)只是一個說明,用Dog.city.__doc__來調(diào)用,即返回 where it is in")
創(chuàng)建實例
david = Dog("David", 2) # 創(chuàng)建實例 # 只用@property的情形 david.eating() # 調(diào)用普通方法 # I am eating david.running # 用過@property裝飾器后不需要加括號 # I can't run dean = Dog("Dean", 4) dean.running # 在@property的屬性中進行判斷 # I am running # @property等三個裝飾器 david.country = "America" print(david.country) del david.country # 如果這里的不出現(xiàn)_country則這樣就可以刪除,但是用self.country則真的變成了屬性,所以為了區(qū)別多定義了一個_country del david._country # 如今需要再把這個中間變量刪除掉才可以 # 無法再調(diào)用 david.country # 不用裝飾器,用函數(shù)的形式 david.city = "Beijing" print(david.city) # Beijing
看完了這篇文章,相信你對python3類中的Dog如何用來轉(zhuǎn)化有了一定的了解,想了解更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)站題目:python3類中的Dog如何用來轉(zhuǎn)化-創(chuàng)新互聯(lián)
分享地址:http://jinyejixie.com/article14/hihge.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、全網(wǎng)營銷推廣、網(wǎng)站設計公司、品牌網(wǎng)站制作、域名注冊、品牌網(wǎng)站設計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容