在python中,当我继承一个类时。我到底要继承什么?我继承了类属性吗?如果是,那么这是否也意味着我继承了它们的默认值?最后,当我声明要继承一个类时,是否必须设置默认值甚至在子类中提及属性。基本上,如果有子类,则在子类中重新声明属性有什么意义?
答案 0 :(得分:1)
摘自官方documentation(亮点是我的):
派生类定义的执行与基类的执行相同。构造类对象时,将记住基类。这用于解析属性引用:如果在类中找不到所需的属性,搜索将继续查找基类。如果基类本身是从其他类派生的,则递归应用此规则。
以下示例应证明:
class C:
attr1 = "hello"
class D(C):
pass
# attr1 isn't defined in D but is inherited from C
print(D.attr1) # output: hello
在子类中声明属性将覆盖在基类中的属性,例如:
class A:
attr1 = 10
class B(A):
attr1 = 20
# attr1 is defined in A but overwritten in B
print(B.attr1) # output: 20