Python 類的特殊成員介紹

2022-03-17 14:51:29 字數 3997 閱讀 2436

公有成員,在任何地方都能訪問

私有成員,只有在類的內部才能方法,私有成員命名時,前兩個字元是下劃線。

class foo:

def __init__(self, name, age):

self.name = name

self.__age = age

def show(self): # 間接方法私有字段

return self.__age

obj = foo('klvchen', 25)

print(obj.name)

res = obj.show()

print(res)

執行結果:

klvchen

25

公有靜態字段:類可以訪問;類內部可以訪問;派生類中可以訪問

私有靜態字段:僅類內部可以訪問;

class foo:

__v = '666' # 私有靜態字段

def __init__(self):

pass

def show(self):

return foo.__v

obj = foo()

res = obj.show()

print(res)

執行結果:

666

class foo:

__v = '666'

def __init__(self):

pass

def show(self):

return foo.__v

@staticmethod

def stat():

return foo.__v

res = foo.stat()

print(res)

執行結果:

666

class f:

def __init__(self):

self.ge = 123

self.__gene = 456 #私有字段

class s(f):

def __init__(self, name):

self.name = name

self.__age = 18

super(s, self).__init__()

def show(self):

print(self.name)

print(self.__age)

print(self.ge)

print(self.__gene)

s = s('klvchen')

s.show()

執行結果:

klvchen

18123

attributeerror: 's' object has no attribute '_s__gene'

class foo:

def __init__(self):

pass

def __int__(self):

return 666

def __str__(self):

return 'hello world'

obj = foo()

print(obj, type(obj))

res = int(obj)

print(res)

res1 = str(obj)

print(res1)

執行結果:

<__main__.foo object at 0x0000022bbe9da978> 666

hello world

class foo:

def __init__(self, n, a):

self.name = n

self.age = a

def __str__(self):

return '%s-%d' %(self.name, self.age)

obj = foo('klvchen', 28)

print(obj)

執行結果:

klvchen-28

class foo:

def __init__(self, name, age):

self.name = name

self.age = age

def __add__(self, other):

return self.age + other.age

obj1 = foo('klv1', 23)

obj2 = foo('klv2', 24)

res = obj1 + obj2

print(res, type(res))

執行結果:

47

class foo:

def __init__(self, name, age):

self.name = name

self.age = age

def __add__(self, other):

return foo(obj1.name, obj2.age)

def __del__(self):

print('析構方法')

obj1 = foo('klv1', 23)

obj2 = foo('klv2', 24)

res = obj1 + obj2

print(res, type(res))

執行結果:

<__main__.foo object at 0x0000016dfce125c0> 析構方法

析構方法

析構方法

class foo:

def __init__(self, name, age):

self.name = name

self.age = age

def __getitem__(self, item):

return item

li = foo('klvchen', 28)

r = li[8]

print(r)

執行結果:

8

class foo:

def __init__(self, name, age):

self.name = name

self.age = age

def __getitem__(self, item):

return item

def __setitem__(self, key, value):

print(key, value)

def __delitem__(self, key):

print(key)

li = foo('klvchen', 28)

r = li[8]

print(r)

li[100] = 'hello'

del li[999]

執行結果:

8100 hello

999

class foo:

def __init__(self, name, age):

self.name = name

self.age = age

def __iter__(self):

return iter([11, 22, 33])

li = foo('klvchen', 26)

for i in li:

print(i)

執行結果:

1122

33

for 迴圈的內部操作

obj = iter([11, 22, 33])

while true:

val = obj.next()

print val

python類的成員 python 類的特殊成員

上文介紹了python的類成員以及成員修飾符,從而了解到類中有字段 方法和屬性三大類成員,並且成員名前如果有兩個下劃線,則表示該成員是私有成員,私有成員只能由類內部呼叫。無論人或事物往往都有不按套路出牌的情況,python的類成員也是如此,存在著一些具有特殊含義的成員,詳情如下 1.doc 表示類的...

python類成員 Python 類的特殊成員解析

類的成員有兩種形式 公有成員,在任何地方都能訪問 私有成員,只有在類的內部才能方法,私有成員命名時,前兩個字元是下劃線。class foo def init self,name,age self.name name self.age age def show self 間接方法私有字段 return...

Python 類的特殊成員方法

1.doc 描述類的資訊 class foo object 單引號和雙引號都可以 這裡描述類的資訊 def func self pass print foo.doc 這裡描述類的資訊2.call 物件後面加括號,觸發執行 call 方法的執行是由物件加括號觸發的,即 物件 或者 類 class fo...