class foo(object):
def __init__(self,a1,a2):
self.a1 = a1
self.a2 = a2
def __call__(self, *args, **kwargs):
print(11111,args,kwargs)
return 123
def __getitem__(self, item):
print(item)
return 8
def __setitem__(self, key, value):
print(key,value,111111111)
def __delitem__(self, key):
print(key)
def __add__(self, other):
return self.a1 + other.a2
def __enter__(self):
print('1111')
return 999
def __exit__(self, exc_type, exc_val, exc_tb):
print('22222')
# 1. 類名() 自動執行 __init__
obj = foo(1,2)
# 2. 物件() 自動執行 __call__
ret = obj(6,4,2,k1=456)
# 3. 物件['xx'] 自動執行 __getitem__
ret = obj['yu']
print(ret)
# 4. 物件['xx'] = 11 自動執行 __setitem__
obj['k1'] = 123
# 5. del 物件[xx] 自動執行 __delitem__
del obj['uuu']
# 6. 物件+物件 自動執行 __add__
obj1 = foo(1,2)
obj2 = foo(88,99)
ret = obj2 + obj1
print(ret)
# 7. with 物件 自動執行 __enter__ / __exit__
obj = foo(1,2)
with obj as f:
print(f)
print('內部**')
# 8. 真正的構造方法
class foo(object):
def __init__(self, a1, a2): # 初始化方法
"""為空物件進行資料初始化
:param a1:
:param a2:
"""self.a1 = a1
self.a2 = a2
def __new__(cls, *args, **kwargs): # 構造方法
"""建立乙個空物件
:param args:
:param kwargs:
:return:
"""return object.__new__(cls) # python內部建立乙個當前類的物件(初創時內部是空的.).
obj1 = foo(1,2)
print(obj1)
obj2 = foo(11,12)
print(obj2)
Python 物件導向 類的特殊成員
new 建立物件 init 初始化物件 class foo object def init self print 初始化物件 def new cls,args,kwargs print 建立物件 return object.new cls obj foo 以上 執行結果是 建立物件 初始化物件 由此...
Python物件導向特殊成員
類的特殊成員之call usr bin env python coding utf 8 class specialmembers 類的構造方法 def init self print my blog is url 物件的構造方法 def call self print my name is yang...
物件導向之成員修飾 特殊成員 methclass
物件導向之 1.成員修飾 2.特殊成員 3.methclass,類之源,type建立 一 成員修飾符 共有成員 私有成員,欄位名 無法直接訪問,只能間接訪問 class foo def init self,name,age self.name name self.age age self.age a...