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