在运行时添加类成员

时间:2015-05-11 06:06:00

标签: python class python-3.x

这两个人的实例之间有什么区别?

class Person:
    pass

a = Person()
a.name = "Jo"
a.age = 25

print(a.name)

b = Person()
b.surname = "Deshu"
print(b.surname)

ab类型相同吗? - 是的 为什么?他们有不同的成员 aPerson.namePerson.age个属性,b只有Person.surname

2 个答案:

答案 0 :(得分:3)

它们是同一类型。 请注意,在python继承中,静态类型语言中的母鸡有点不同。

python使用duck typing - 也就是说,你不必拥有一个允许多态的公共超类或接口 - 你只需拥有相关的方法\属性。

另一方面,如果能够定义动态字段或方法,则可以使用不同的方法属性集来使同一个类的不同对象成为可能。

取决于你不要滥用鸭子打字

python继承与行为继承更相关 - 从超类继承方法实现。

答案 1 :(得分:0)

与模块一样,类也参与Python的动态特性:它们是在运行时创建的,可以在创建后进一步修改。

您可以查看有关该主题的python文档。 https://docs.python.org/2/tutorial/classes.html