class Grandfather(object): mylist = [] def __init__(self): pass class Father(Grandfather): pass Grandfather.mylist = [1, 2, 3, 4] print(Grandfather.mylist) print(Father.mylist) Father.mylist = ['a'] Grandfather.mylist = ['b'] print(Father.mylist) print(Grandfather.mylist) print(Father.mylist)
輸出結果:
[1, 2, 3, 4] [1, 2, 3, 4] ['a'] ['b'] ['a']
從上面的實驗可以看出,子類繼承父類后,初始狀態下,繼承了父類的屬性。
當在子類中修改繼承過來的類屬性時,並不會修改父類的同名類屬性。以后只要是通過子類訪問該屬性,訪問的都是子類的屬性;
通過父類修改了父類屬性后,子類訪問該屬性時,會訪問父類修改后的屬性值。前提是子類沒有對該屬性重新賦值過,如果子類修改過該屬性,則會遵循上面的規則