python物件與屬性相關的特殊方法

2021-07-03 11:55:04 字數 1904 閱讀 6325

這裡主要演示了python的類方法,例項方法,靜態方法,類方法可以以類名.類方法名的方式呼叫,也可以以例項物件.類方法名呼叫,且類方法在定義時需要@classmethod;例項方法必須以例項物件.例項方法名呼叫;靜態方法以類名或者例項名都可以,靜態方法需要@statucmethod

class person:

num = 0

def __init__(self, name, age):

self.name = name

self.age = age

"""self.attr_name = attr_value, 所以如果此方法做了限制,可能在__init__方法中的屬性賦值也會出現問題"""

def __setattr__(self, attr_name, attr_value):

self.__dict__[attr_name] = attr_value

"""del self.attr_name,這裡取決於__getattribute__方法的正確設定"""

def __delattr__(self, attr_name):

del self.__dict__[attr_name]

"""無條件的在獲取屬性值時使用"""

def __getattribute__(self, attr_name):

"""can not use return self.__dict__[attr_name],這樣會導致遞迴發生,因為獲取__dict__時也需要呼叫__getattribute__(),此方法是絕對的"""

return object.__getattribute__(self, attr_name)

"""未查找到屬性值時呼叫"""

def __getattr__(self, attr_name):

return "not defined!"

"""object instance pointer"""

def instance_description(self):

print "i can be called by class instance"

"""cls class pointer"""

@classmethod

def calss_description(cls):

"""print the name of the class"""

print "i can be called by class: %s" %cls.__name__

"""be called by all"""

@staticmethod

def toolmethod():

print "i am a toolmethod"

def regularmethod():

print "i am a regualr method"

p1 = person("name1", 24)

p1.calss_description()

p1.instance_description()

p1.toolmethod()

person.calss_description()

"""person.instance_description()"""

"""person.instance_description(person("name2", 25))"""

person.toolmethod()

p1.addr = "wuhu"

print p1.wife

print p1.__dict__

del p1.addr

print p1.__dict__

print person.__dict__

Python 物件導向 屬性相關

什麼是物件 物件是具體物體,擁有屬性,擁有行為 python 是一門特別徹底的物件導向程式設計 oop 的語言 物件導向 在解決問題的時候,關注的是解決問題的每乙個過程 物件導向 在解決問題的時候,關注的是解決問題所需要的物件 物件導向本身是對面向過程的封裝 物件導向最重要的 某乙個具體物件特徵的抽...

iOS property 屬性相關的總結

讀寫屬性 readwrite readonly setter語意 assign retain copy 原子性 多執行緒管理 atomic nonatomic 強弱引用 strong weak 強指標 strong 弱指標 weak arc管理記憶體是用assign還是用weak?assign 如果...

JSP和屬性相關的方法和域物件

1 方法 object getattribute string name 獲取指定的屬性 enumerationgetattributenames 獲取所有的屬性的名字組成的enumeration物件 void removeattribute string name 移除指定的屬性 void set...