在類中定義方法
def __str__(self):
return "你好"
#當執(zhí)行print(實例名)時蝙斜,會自動調(diào)用__str__方法 結(jié)果是輸出 你好
@property (可讀讨彼,直接讀取return返回的值)與@函數(shù)名.setter(可寫,當調(diào)用實例名.age=xxx時厕怜,調(diào)用的是@函數(shù)名.setter標識的函數(shù))
class cat(object):
def __init__(self):
self.__age = 14
@property
def age(self):
return "nihao"
#前面必須有@property聲明的函數(shù),否則會報錯
@age.setter
def age(self,age):
self.__age=age
if __name__ == "__main__":
c = cat()
c.age=4
print(c.age)
slots=(tuple)方法
ps:如果當前類包含有slots方法驶忌,那么該類不能添加新的屬性,只能使用在slots元組中的屬性府怯,slots元組中的屬性值可以變化刻诊,當該類被繼承時,該類的slots方法不會影響他的子類牺丙,也就是說则涯,子類仍然可以添加新的屬性,除非子類中也有slots方法冲簿,子類也會繼承父類中的slots方法中的屬性
類的實例方法粟判,比如直接def 方法名 只能用實例調(diào)用
被@staticmethod修飾
類的靜態(tài)方法,可以通過類名或者實例名來調(diào)用
被@classmethod修飾
類的類方法,可以通過類名或者實例名來調(diào)用
class Cat(object):
log="sss"
@classmethod
def info(cls):
return "你好峦剔,我是類方法"+cls.log
if __name__ == "__main__":
c=Cat()
print(c.info())
print(Cat.info())
ps:萬物皆對象
hasattr(object, name)
判斷object對象中是否存在name屬性档礁,有則返回True,否則返回False吝沫;需要注意的是name參數(shù)是string類型呻澜,所以不管是要判斷變量還是方法,其名稱都以字符串形式傳參