【问题标题】:Accessing an object(1) inside an object(2) that was created in the first object(1)访问在第一个对象 (1) 中创建的对象 (2) 内的对象 (1)
【发布时间】:2022-01-08 14:29:32
【问题描述】:

在对象(第一个)内创建一个对象(第二个)后,我想访问第一个对象。如果不将第一个对象作为属性赋予第二个对象,这是否可能?

在下面的代码中,我可以访问我的第一个对象。我只是好奇是否有更好的方法来获得类似的东西,而不是将我的第一个对象传递给我的第二个对象。

class first():
    def __init__(self,v):
        
        self.a = v
        self.b = second(self)
        
        
class second():
    def __init__(self, first):
        
        
        
        self.changefirst(first)
        
    def changefirst(self,first):
        first.a = 5
        
        
x = first(3)
print(x.a)

输出: 5

【问题讨论】:

  • 否;对象对引用它们的内容一无所知,因此如果您希望second 的实例知道first 的实例,则需要显式提供该引用。
  • 不,没有更好的办法。
  • 同一个second对象可以被多个对象引用。
  • 根据您的操作,您可能希望保存first 的引用,而不是使用它并丢弃它。 self.first = first.

标签: python object oop


【解决方案1】:

您可以使用first 中的方法,如下所示:

class first:
    def __init__(self, v):
        self.a = v
        self.b = second()
        self.update_a(5)

    def update_a(self, val):
        self.a = val


class second:
    def __init__(self):
        pass


x = first(3)
print(x.a)

5

现在,如果你想触发ab的更新,你必须传递self,因为它附加了属性。

另一种方式:



class first:
    def __init__(self, v):
        self.a = v
        self.b = second(self)

    def update_a(self, val):
        self.a = val


class second:
    def __init__(self, that):
        that.update_a(5)

【讨论】:

    猜你喜欢
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 2021-07-20
    • 2018-04-16
    相关资源
    最近更新 更多