上一篇: 面向對象案例講解 | 手把手教你入門Python之五十六 下一篇: 對象屬性和類屬性 | 手把手教你入門Python之五十八 本文來自于千鋒教育在阿裡雲開發者社群學習中心上線課程 《Python入門2020最新大課》 ,主講人姜偉。
内置屬性
使⽤内置函數
dir
可以檢視⼀個對象⽀持的所有屬性和⽅法,Python中存在着很多的内置屬性。
__slots__
Python中⽀持動态屬性,可以直接通過點文法直接給⼀個對象添加屬性,代碼更加的靈活。但是在某些情況下,我們可能需要對屬性進⾏控制,此時,就剋使⽤__slots__實作。
class Person(object):
__slots__ = ('name', 'age')
def __init__(self, name, age):
self.name = name
self.age = age
p = Person('張三', 18)
p.name = '李四'
# 對象p隻能設定name和age屬性,不能再動态添加屬性
# p.height = 180 # 報錯
__doc__
表示類的描述資訊。
class Foo:
""" 描述類資訊,這是⽤于看⽚的神奇 """
def func(self):
pass
print(Foo.__doc__)
#輸出:類的描述資訊
__module__ 和 __class__
__module__ 表示目前操作的對象在那個子產品;__class__ 表示目前操作的對象的類是什麼。
test.py
class Person(object):
def __init__(self):
self.name = 'laowang'
main.py
from test import Person
obj = Person()
print(obj.__module__) # 輸出 test 即:輸出子產品
print(obj.__class__) # 輸出 test.Person 即:輸出類
__dict__
以字典的形式,顯示對象所有的屬性和⽅法
class Province(object):
country = 'China'
def __init__(self, name, count):
self.name = name
self.count = count
def func(self, *args, **kwargs):
print('func')
# 擷取類的屬性,即:類屬性、⽅法、
print(Province.__dict__)
# 輸出:{'__dict__': <attribute '__dict__' of 'Province' objects>, '__module__': '_
_main__', 'country': 'China', '__doc__': None, '__weakref__': <attribute '__weakre
f__' of 'Province' objects>, 'func': <function Province.func at 0x101897950>, '__i
nit__': <function Province.__init__ at 0x1018978c8>}
obj1 = Province('⼭東', 10000)
print(obj1.__dict__)
# 擷取 對象obj1 的屬性
# 輸出:{'count': 10000, 'name': '⼭東'}
obj2 = Province('⼭⻄', 20000)
print(obj2.__dict__)
# 擷取 對象obj1 的屬性
# 輸出:{'count': 20000, 'name': '⼭⻄'}
__getitem__、__setitem__和__delitem__⽅法
這三個⽅法,是将對象當做字典⼀樣進⾏操作。

class Foo(object):
def __getitem__(self, key):
print('__getitem__', key)
def __setitem__(self, key, value):
print('__setitem__', key, value)
def __delitem__(self, key):
print('__delitem__', key)
obj = Foo()
result = obj['k1'] # ⾃動觸發執⾏ __getitem__
obj['k2'] = 'laowang' # ⾃動觸發執⾏ __setitem__
del obj['k1'] # ⾃動觸發執⾏ __delitem__