在python中,同一类的两个不同对象可以具有不同的变量数吗

2024-06-08 15:45:12 发布

您现在位置:Python中文网/ 问答频道 /正文

class car:
    pass

firstcar = car()
secondcar = car()

firstcar.wheels = 4
print(firstcar.wheels)

output: 4

但是当我尝试print(type(secondcar.wheels))时,它会给我属性错误

  1. 当我创建c1.wheels时,为什么wheels没有创建为对象c2的实例变量
  2. 如果没有为c2创建wheels,那么在python中,同一类的对象可以有不同数量的实例变量

Tags: 对象实例output属性type错误passcar
2条回答

您正在将wheels属性添加到实例firstcar,而不是添加到car

每个实例都有一个__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)

这不会给您属性错误。事实上,您可以在创建实例后向类添加属性,并且仍然可以避免错误

(这只是为了解释,不建议在现实生活中使用它,它可能会导致一些非常混乱的代码!)

是的,同一类的两个对象可以具有不同数量的实例变量,但它们始终具有相同数量的类变量

相关问题 更多 >