一. 主動呼叫其他類的成員
class base(object):def f1(self):
print('5個功能')
obj = base()
base.f1(obj)
obj.f1()
方式一
class base(object):def f1(self):
print('5個功能')
class foo(object):
def f1(self):
print('3個功能')
base.f1(self)
obj = foo()
obj.f1()
方式二:按照類的繼承順序,找下乙個.
class base(object):def f1(self):
print('5個功能')
class foo(base):
def f1(self):
super().f1()
print('3個功能')
obj = foo()
obj.f1()
方式二:按照類的繼承順序,找下乙個.
class foo(object):def f1(self):
super().f1()
print('3個功能')
class bar(object):
def f1(self):
print('6個功能')
class info(foo,bar):
pass
# obj = foo()
# obj.f1() # foo中沒有繼承bar, super()會報錯
obj = info()
obj.f1()
二. 特殊成員
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 在類中主動呼叫其他類的成員
將兩個類的函式合在一起時這麼寫 方法一 class base object deff1 self print 5個功能 class foo object deff1 self print 3個功能 用類名呼叫例項方法不能自動傳self,需要手動傳參 base.f1 self obj foo obj....
C 類的特殊成員
靜態成員 static static int m int ca m 0 類中的靜態資料初始化,靜態成員不屬於物件,無法通過物件的操作進行初始化,它是屬於類的,初始化的時候不管公有私有都在類外進行 類中的靜態資料成員,可以被普通函式訪問 常量成員 類中的常量成員分為兩種 常量資料成員,常量函式成員 c...
類成員函式呼叫
大家都知道c 的虛函式前必須加virtual,但如果一連串的繼承下來,有的忘了加virtual會出現什麼情況呢?為了滿足我的好奇心,做了點實驗然後有了本文,僅僅是好玩,沒有啥實際意義。本文只給出vs2005的情況 首先,如果是單一類,沒加virtual的話那麼好辦,直接call a fun,非sta...