python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别
生活随笔
收集整理的這篇文章主要介紹了
python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
1、#類方法@classmethod,只能訪問類變量,不能訪問實例變量,通過cls參數(shù)傳遞當(dāng)前類對象,不需要實例化,直接【類名.方法名()】,可通過類對象和類對象實例訪問
類方法:第一個參數(shù)強制為類對象,可以通過這個類對象訪問類屬性,由于沒有傳入類實例對象,所以不能訪問類實例屬性。
2、#靜態(tài)方法@staticmethod,名義歸類管,實際跟類沒關(guān)系,跟類關(guān)聯(lián)截斷了,是類下單獨的函數(shù),可以不傳遞任何參數(shù),不需要實例化,直接【類名.方法名(),可通過類對象和類對象實例訪問
類靜態(tài)方法:無法訪問類屬性、類實例屬性、沒有默認(rèn)的第一個參數(shù),其實跟類沒什么關(guān)系,只是綁定在類命名空間下的函數(shù)而已。
3、#實例方法,一般類下未帶修飾符@是實例方法,需要實例化后調(diào)用
類實例方法:第一個參數(shù)強制為類實例對象,可以通過這個類實例對象訪問類屬性,可以通過類實例對象的__class__屬性訪問類屬性。
class DemoClass(object):name='橙子'def __init__(self,name):self.name=namedef objPrint(self,other):#實例方法print("%s 是實例化方法:%s"%(self.name,other))@classmethoddef classPrint(cls,other):#類方法print('%s 是類方法,只能調(diào)類變量 %s'%(cls.name,other))@staticmethoddef staticPrint(other):#靜態(tài)方法print('我是靜態(tài)方法 %s'%other) obj=DemoClass("橙汁")#實例化類 obj.objPrint("啦啦") DemoClass.classPrint('傻傻') DemoClass.staticPrint('靜靜')C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py 橙汁 是實例化方法:啦啦 橙子 是類方法,只能調(diào)類變量 傻傻 我是靜態(tài)方法 靜靜Process finished with exit code 0?
4、#屬性方法@property,將類方法變?yōu)閷傩?#xff0c;并賦值
class test(object):def __init__(self,name):self.name=nameself.__food=None@propertydef wangli(self):#屬性方法 方法改屬性print('%s is eating %s'%(self.name,self.__food))@wangli.setterdef wangli(self,food):#屬性賦值print('set to food:',food)self.__food=food a=test('花花') a.wangli a.wangli='包子' a.wangliC:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py 花花 is eating None set to food: 包子 花花 is eating 包子Process finished with exit code 0?
總結(jié)
以上是生活随笔為你收集整理的python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抓包工具mitmproxy环境配置使用(
- 下一篇: 白盒测试 | 用例设计方法之判定覆盖