python四十三:静态属性,类方法
生活随笔
收集整理的這篇文章主要介紹了
python四十三:静态属性,类方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
靜態屬性 ?@property ?既可以訪問類屬性,也可以訪問實例屬性
class Phone:def __init__(self,brand,color, version):self.brand = brandself.color = colorself.version = version# 相當于把函數屬性編變成了數據屬性# 這樣調用方法由 實例.call() 變為 實例.call@propertydef call(self):# print("正在用%s牌%s手機打電話"% (self.brand,self.color))return "正在用%s牌%s手機打電話"% (self.brand,self.color)p = Phone("apple", "白色", "iphone x") v = p.call # p.call調用方式來看,我們不會知道call是數據屬性還是函數屬性,這樣方法就被隱藏起來了。 print(p.color, v)?
類方法?@classmethod 可以訪問類屬性
class Phone:function = "打電話";def __init__(self,brand,color, version):self.brand = brandself.color = colorself.version = version# 相當于把函數屬性編變成了數據屬性# 這樣調用方法由 實例.call() 變為 實例.call@propertydef call(self):# print("正在用%s牌%s手機打電話"% (self.brand,self.color))return "正在用%s牌%s手機打電話"% (self.brand,self.color)# classmethod可以將方法定義為類方法,可以直接通過 類名.方法名直接調用@classmethoddef func(cls):print(cls) # 傳遞進來的參數其實是一個類print("---->",cls.function)p = Phone("apple", "白色", "iphone x")# 可以直接通過 類名.方法名直接調用 Phone.func()# 可以不用通過 傳遞實例對象,調用func(p)了 # Phone.func(p)靜態方法 @staticmethod ?不能使用類變量和實例變量
class Phone:function = "打電話";def __init__(self,brand,color, version):self.brand = brandself.color = colorself.version = version# 相當于把函數屬性編變成了數據屬性# 這樣調用方法由 實例.call() 變為 實例.call@propertydef call(self):# print("正在用%s牌%s手機打電話"% (self.brand,self.color))return "正在用%s牌%s手機打電話"% (self.brand,self.color)# classmethod可以將方法定義為類方法,可以直接通過 類名.方法名直接調用@classmethoddef func(cls):print(cls) # 傳遞進來的參數其實是一個類print("---->",cls.function)@staticmethod # 靜態方法只是名義上的歸屬類管理,不能使用類變量和實例變量,只是類的工具包def see_movie(aa,bb):print("%s %s 正在拿手機看電影"%(aa, bb));Phone.see_movie("小明","小米")p = Phone("apple", "白色", "iphone x") p.see_movie("小明","小米")?
總結
以上是生活随笔為你收集整理的python四十三:静态属性,类方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库进程
- 下一篇: websocket python爬虫_p