为什么允许向已经实例化的对象添加属性?

13 浏览
0 Comments

为什么允许向已经实例化的对象添加属性?

我正在学习Python,虽然我认为我完全理解了Python的整个概念和概念,但今天我遇到了一段我不完全理解的代码:

假设我有一个类,应该定义圆但缺少主体:

class Circle():
    pass

由于我没有定义任何属性,那我怎么能做到这一点:

my_circle = Circle()
my_circle.radius = 12

奇怪的是,Python接受了上述语句。我不明白为什么Python没有引发undefined name error。我确实理解通过动态类型,我可以随时将变量绑定到对象,但是难道不应该在Circle类中存在一个radius属性才能允许我这样做吗?

编辑:你们的回答中有很多精彩的信息!非常感谢大家的所有精彩回答!可惜我只能选择一个作为答案。

0