【问题标题】:Python: How to use data that other classes produces?Python:如何使用其他类产生的数据?
【发布时间】:2020-07-11 10:44:07
【问题描述】:

假设我有一堂课:

class Foo:
def __init__(self):
    self.value_a = None

在一个模块上,在另一个模块上,我有另一个类:

class Bar:
def __init__(self):
    self.value_b = None

def value_update(self):
    self.value_b = some_operation

由于 python 没有指针,我无法将 Foo 类上的对象 self.value_a 指向 Bar 类上 self.value_b 对象的内存位置。那么,在这种情况下,我能做些什么呢?重点是,例如,我希望类 Foo 看到类 Bar 生成的值并在其自己的类中使用它们。

【问题讨论】:

    标签: python class object pointers kivy


    【解决方案1】:

    如果我正确理解了您的问题,您正试图更改在另一个类中的一个类中定义的变量。在您当前的情况下,当您使用关键字self 时,您指的是该类的特定实例。更改该特定值的唯一方法是在另一个类中创建该类的实例并在那里进行更改。

    例如,我可能会做类似的事情

    class Bar:
     def __init__(self):
        self.value_b = Foo()
    
     def value_update(self):
        self.value_b.a=new_value
    

    否则,我可能会去掉 self 关键字并这样做:

    class Foo:
      value_a=None
      def __init__(self):
           paste some code here...
    class Bar:
     def __init__(self):
        self.value_b = Foo.a # just copies the value, not reference!
    
     def value_update(self):
        self.value_b=new_value # this will NOT change Foo.a
        Foo.a=new_value #this will change it
    

    附:在您的情况下,我会说 第二种方法 更可取

    编辑:我想我错了,因为它只是从Foo 复制值而不是引用它。然后,我想您可能每次必须手动更改 Foo.a

    【讨论】:

    • 是的,亚历克斯,你理解得很好。非常感谢您抽出宝贵时间帮助我!
    猜你喜欢
    • 2020-07-14
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多