在另一个类中实例化的类 - 初学者问题 [重复]

Class instantiated within another class - Beginner question [duplicate]

提问人:MRoot 提问时间:6/14/2023 更新时间:6/14/2023 访问量:28

问:

对不起,对于非常基本的问题,我从几天开始接触 Python。 我查看了其他一些线程,虽然我理解为什么会发生这种情况,但我不确定我是否理解了可能的解决方案。

我在这里附上一个简短的代码片段示例:

class Class_one:
    name = "First"

class Class_two:
    new_object = Class_one()

instance_one = Class_two()
instance_one.new_object.name = "Second"
instance_two = Class_two()
instance_two.new_object.name = "Third"

print(instance_one.new_object.name)
print(instance_two.new_object.name)

我看到Class_one只被实例化了一次,尽管我试图将两个不同的实例与instance_one关联,另一个与instance_two关联。

目标是将“第二”和“第三”作为两个打印指令的结果,而我得到“第三”和“第三”。

在保持两类结构的情况下,获得该结果的正确方法是什么?

Python 嵌套 实例

评论

2赞 The Empty String Photographer 6/14/2023
只要问题写得好,它有多基本并不重要。
1赞 luk2302 6/14/2023
digitalocean.com/community/tutorials/......
0赞 MRoot 6/14/2023
我希望是..:)

答:

1赞 matszwecja 6/14/2023 #1

您使用的语法用于类变量,即在同一的实例之间共享的变量。为了声明实例变量,您需要引用实例来声明,例如使用实例方法的参数:self

class Class_one:
    name = "First"

class Class_two:
    def __init__(self):
        self.new_object = Class_one()

instance_one = Class_two()
instance_one.new_object.name = "Second"
instance_two = Class_two()
instance_two.new_object.name = "Third"

print(instance_one.new_object.name)
print(instance_two.new_object.name)

评论

0赞 MRoot 6/14/2023
非常感谢你,这是一件愚蠢的事情,但我无法理解。现在很清楚了。赞赏!