目錄
查看類的繼承層次結構
通過類的方法 mro() 或者類的屬性__mro__可以輸出這個類的繼承層次結構;
object() 根類
object 類是所有類的父類, 因此所有的類都有object 類的屬性和方法; 我們顯然有必要深入研究一下object 類的結構;
dir( ) 查看對象屬性
可以方便我們看到指定對象所有的屬性
#查看類的繼承層次結構
class A:pass
class B(A):pass
class C(B):pass
print(C.mro())
print("*"*30)
class Person:
def __init__(self,name,age):
self.name = name
self.age = age
def say_age(self):
print(self.name,"的年齡是:",self.age)
obj = object()
print(dir(obj))
print("---"*15)
'''
從上面我們可以發現這樣幾個要點
1.Person對象增加了六個屬性
__dict__ __module__ __weakref__ age name say_age
2.object的所有屬性,Person類作爲object的子類,顯然包含了所有的屬性
3.我們打印age,name,say_age,發現say_age雖然是方法,實際上也是屬性,
只不過,這個屬性的類型是'method'而已;
age <class 'int'>
name <class 'str'>
say_age <class 'method'>
'''
s2 = Person("李四",18)
print(dir(s2))
輸出:
D:\wwwroot\pyiteam\venv\Scripts\python.exe D:/wwwroot/pyiteam/mypro_obj/mypy02.py
[<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>]
******************************
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
---------------------------------------------
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'name', 'say_age']
Process finished with exit code 0