特殊的類方法

2022-08-29 02:33:13 字數 732 閱讀 1056

__hasattr__(self, item)

點號攔截運算,注:這是乙個繫結物件方法

在乙個類中,如果類裡定義了該方法(大多數內建類是沒有的),則這個類生成的物件加點呼叫屬性或方法時,如果呼叫的名字不存在,不會報錯,會執行__hasattr__()這個方法。

class person(object):

def __init__(self,name):

self.name = name

def __getattr__(self, item):

print('呼叫了乙個不存在的屬性或方法:%s'%item)

return 'error'

alex = person('alex')

print(alex.age)

> 呼叫了乙個不存在的屬性或方法:age

> error

__setattr__(self, key, value)

賦值攔截運算,注:這是乙個繫結物件方法

如果類裡定義了該方法,則這個類生成的物件進行賦值運算時,無論呼叫的名字是否存在都會執行,都會執行__setattr__()。此時如果想實現原有的物件屬性賦值功能應按照下面**寫:

class person(object):

def __setattr__(self,key,value)

self.__dict__['key'] = value

PYTHON類的特殊方法

例項1 python view plain copy coding utf 8 class firstdemo object 這裡是乙個doc a 10 類屬性 def demo self 第乙個方法 pass def demo2 self 第二個方法 pass print firstdemo.di...

Python類的特殊方法

doc描述類的資訊 class foo object 單引號和雙引號都可以 這裡描述類的資訊 def func self passprint foo.doc 這裡描述類的資訊 call物件後面加括號,觸發執行 class foo object defcall self,args,kwargs pri...

類的特殊方法 new

上 class a def new cls,args,kwargs obj super new cls print new obj main a object at 0x00000000021d76a0 return obj def init self,name,age print init sel...