小編給大家分享一下python3類中的Dog如何用來轉化,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

創新互聯建站是一家專注于網站設計、成都網站設計與策劃設計,昂仁網站建設哪家好?創新互聯建站做網站,專注于網站建設10余年,網設計領域的專業建站公司;建站業務涵蓋:昂仁等地區。昂仁做網站價格咨詢:18982081108
Dog類是Animal的一個子類,主要講解三個裝飾器進行方法向屬性的轉換。
轉換有兩個主要的好處:
一是調用沒有參數的方法時不再需要加括號,這樣的方法就可以當做屬性來看
二是這樣定義的屬性賦值時可以進行判斷,防止無效屬性的產生
這樣的轉換有兩種方式:
一種是通過@property裝飾器,這個裝飾器系列一共三個,如果只是想調用這個方法可以只使用@property這個裝飾器
一種是通過property函數
下面是一個例子,一些說明可以在最后面定義的print_dog方法中查看
class Dog(Animal): # 類的繼承
# 只使用@property裝飾器與普通函數做對比
def eating(self):
print("I am eating")
@property # 用這個裝飾器后這個方法調用就可以不加括號,即將其轉化為屬性
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 # 用 函數名.setter 的裝飾器
def country(self, value): # 設置這個屬性的值
self._country = value
@country.deleter
def country(self):
print("The attr country is deleted")
# 用property函數實現和裝飾器相同的功能
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的一個子類,主要講解三個裝飾器進行方法向屬性的轉換")
print("類繼承,創建實例時仍要指定父類的普通屬性")
print("@property裝飾器將方法轉化為屬性方式調用,此時的方法必須只有一個self參數")
print("使用@property后可以看做一個屬性(country),用property函數可以達到相同的效果(city)")
print("注:city中property第四個參數只是一個說明,用Dog.city.__doc__來調用,即返回 where it is in")創建實例
david = Dog("David", 2) # 創建實例
# 只用@property的情形
david.eating() # 調用普通方法
# 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 # 如果這里的不出現_country則這樣就可以刪除,但是用self.country則真的變成了屬性,所以為了區別多定義了一個_country
del david._country # 如今需要再把這個中間變量刪除掉才可以
# 無法再調用 david.country
# 不用裝飾器,用函數的形式
david.city = "Beijing"
print(david.city) # Beijing
看完了這篇文章,相信你對python3類中的Dog如何用來轉化有了一定的了解,想了解更多相關知識,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀!
當前題目:python3類中的Dog如何用來轉化
轉載來源:http://www.yijiale78.com/article8/pchcip.html
成都網站建設公司_創新互聯,為您提供建站公司、軟件開發、ChatGPT、網站設計、定制網站、網站改版
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯