主動呼叫其他類的成員, 特殊成員

2022-07-17 01:21:06 字數 2608 閱讀 9392

一. 主動呼叫其他類的成員

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...