以下代码如何工作:
- 同一类的不同对象如何具有不同数量的属性?
class MyClass:
pass
p1 = MyClass()
p1.atrib1="1"
p1.atrib2="2"
p1.atrib3="3"
p2 = MyClass()
p2.atrib1="1"
p2.atrib2="2"
print(p1.atrib3) // ok
print(p2.atrib3) //error
这在内部是如何工作的,鉴于在 Python 中,构造函数不会阻止向现有对象添加新属性,而是确保每个创建的对象都具有一组特定的属性。
对象属性和类属性(静态属性)——所有对象都可用——与其他 PL 相比如何?例如,在 C++ 中 - 有字段和方法变量 - 区别在于范围,有静态变量 - 仅在访问类时可用,对对象不可用。据我了解,Python 中的对象属性类似于 C++ 中的字段(但我仍然不清楚每个对象如何拥有它们),静态属性只是 C++ 中静态字段的模拟,但在 Python 中 -是否可以通过特定对象访问它们?
PS - 问题的标签包含 C++ 标签 - 因为我想使用仅与 C++ 进行比较的示例来了解想法的差异。