有关使用python进行编程的类,子类和属性的概念性问题

时间:2018-08-18 10:47:51

标签: python class attributes subclass

在python中,当我继承一个类时。我到底要继承什么?我继承了类属性吗?如果是,那么这是否也意味着我继承了它们的默认值?最后,当我声明要继承一个类时,是否必须设置默认值甚至在子类中提及属性。基本上,如果有子类,则在子类中重新声明属性有什么意义?

1 个答案:

答案 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