python 類和對象的屬性

來源:互聯網
上載者:User

標籤:

python類和對象的屬性分為類屬性和對象屬性兩大類,類屬性屬於類,而對象屬性屬於對象。

1. 父類的對象屬性會被子類的對象繼承。

2. 父類的類屬性會被子類繼承,還是作為類屬性,如果父類改變了類屬性,父類和子類的類屬性都會被改變。

3. 子類繼承父類的類屬性可以通過類名+屬性名稱使用,但是一旦發生賦值,就會新定義一個相同名字的子類自己的類屬性。

4. 類的對象可以通過對象名+屬性名稱使用類屬性,但是一旦發生賦值,就會新定義一個相同名字的對象屬性,而且不會被繼承。

eg:

>>> class A(object):...     value = 1 #類屬性...     def __init__(self):...         self.value2 = 2 # 對象屬性... >>> a = A()>>> print a.__dict__{‘value2‘: 2}>>> print A.__dict__{‘__module__‘: ‘__main__‘, ‘value‘: 1, ‘__dict__‘: <attribute ‘__dict__‘ of ‘A‘ objects>, ‘__weakref__‘: <attribute ‘__weakref__‘ of ‘A‘ objects>, ‘__doc__‘: None, ‘__init__‘: <function __init__ at 0x10fcd1de8>}>>> a.value = 2 #新定義了的對象屬性,不再是A的類屬性>>> A.value 1>>> print a.__dict__{‘value2‘: 2, ‘value‘: 2}>>> class B(A):...     value_B = 3... >>> b = B()>>> print b.__dict__{‘value2‘: 2}>>> print B.__dict__{‘__module__‘: ‘__main__‘, ‘__doc__‘: None, ‘value_B‘: 3}>>> B.value1>>> B.value = 5 #新定義了B的類屬性,不再是繼承自A的類屬性。>>> A.value1>>> print B.__dict__{‘__module__‘: ‘__main__‘, ‘__doc__‘: None, ‘value‘: 5, ‘value_B‘: 3}>>> 

 注意:Python中的屬性是分層定義的,當我們需要調用某個屬性的時候,Python會一層層向上遍曆,直到找到那個屬性。(某個屬性可能出現再不同的層被重複定義,Python向上的過程中,會選取先遇到的那一個,也就是比較低層的屬性定義)。

python 類和對象的屬性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.