天天看點

Python的内置屬性 | 手把手教你入門Python之五十七

上一篇: 面向對象案例講解 | 手把手教你入門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__⽅法

這三個⽅法,是将對象當做字典⼀樣進⾏操作。

Python的内置屬性 | 手把手教你入門Python之五十七
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__           

配套視訊