2024-06-08 15:45:12 发布
网友
class car: pass firstcar = car() secondcar = car() firstcar.wheels = 4 print(firstcar.wheels)
output: 4
但是当我尝试print(type(secondcar.wheels))时,它会给我属性错误
print(type(secondcar.wheels))
您正在将wheels属性添加到实例firstcar,而不是添加到car类
wheels
firstcar
car
每个实例都有一个__dict__属性,该属性保存所有其他属性,并且有效地保存您正在使用的所有属性
__dict__
firstcar.wheels=4
是
firstcar .__dict__[wheels]=4 #nb. this won't actually work as you cant assign to object __dict__s this way; #it's just an analogy!
现在这可能更清楚了为什么这不会影响第二辆车
firstcar = car() secondcar = car() firstcar.wheels=4 print(firstcar.__dict__) #{'wheels': 4} print(secondcar.__dict__)#{}
相反,您实际上可以通过以下方式向类添加变量:
class car: pass car.wheels="" firstcar = car() secondcar = car() firstcar.wheels = 4 print(firstcar.wheels) print(secondcar.wheels)
这不会给您属性错误。事实上,您可以在创建实例后向类添加属性,并且仍然可以避免错误
(这只是为了解释,不建议在现实生活中使用它,它可能会导致一些非常混乱的代码!)
是的,同一类的两个对象可以具有不同数量的实例变量,但它们始终具有相同数量的类变量
您正在将
wheels
属性添加到实例firstcar
,而不是添加到car
类每个实例都有一个
__dict__
属性,该属性保存所有其他属性,并且有效地保存您正在使用的所有属性是
现在这可能更清楚了为什么这不会影响第二辆车
相反,您实际上可以通过以下方式向类添加变量:
这不会给您属性错误。事实上,您可以在创建实例后向类添加属性,并且仍然可以避免错误
(这只是为了解释,不建议在现实生活中使用它,它可能会导致一些非常混乱的代码!)
是的,同一类的两个对象可以具有不同数量的实例变量,但它们始终具有相同数量的类变量
相关问题 更多 >
编程相关推荐