【问题标题】:Transferring variables between classes在类之间传输变量
【发布时间】:2011-06-02 01:51:57
【问题描述】:

我有 2 个类对相同的变量进行操作,但彼此相反。有没有一种方法可以在它们之间传输变量,而无需对每次交换进行硬编码或将所有值组合到一个数组中?组合类不是一种选择。

#pseudocode

class class1:
   def __init___(self):
      # code
      initialize variable MAIN

   # do stuff
   # do stuff
   make variable stuff
   # do stuff
   make variable thing
   # do stuff

class class2:
   def __init___(self):
      # code
      initialize variable stuff
      initialize variable thing
   # do stuff
   # do stuff
   undo variable stuff
   # do stuff
   undo variable thing
   # do stuff
   make variable MAIN

我希望能够在class1class2 之间快速来回发送数据。

【问题讨论】:

  • 您所说的一个例子可能会有所帮助。 “做倒数”? “转移变量”?
  • 是的,就这样做吧!您尝试了哪些方法,为什么没有奏效?
  • 目前还不清楚你到底是什么意思。你能发布一个工作示例吗?

标签: python class variables class-variables


【解决方案1】:

将共享数据放入第三个对象并从两个类中引用它。

【讨论】:

  • 我特别说过将数据放入第三个对象不起作用。编辑:嗯,确实如此,但一点也不优雅
  • 好吧,不,你没有这么说。 :) 你说 组合 他们没有工作。不同的东西。
  • @calccrypto:“但它一点也不优雅”。错误的。它非常优雅,通过简单的重构很好地解决了您的所有问题。
  • @S.Lott 将具有相应名称的所有实例变量从一个类转移到另一个类会更加优雅。我认为这就是这个问题要问的问题,但我还没有找到方法。
【解决方案2】:

我认为这比您想象的要容易得多。以下是两个类之间“发送”数据的一些示例。

class class2(object):
    def __init__(self, other):
        self.other = other

    def set_color(self, color):
        self.color = color
        # "Sending" to other class:
        self.other.color = color

    def set_smell(self, smell, associated_object):
        self.smell = smell
        associated_object.smell = smell

这样的用法:

>>> ob1 = class1()
>>> ob2 = class2(ob1)
>>> ob2.set_color("Blue")
>>> ob1.color
"Blue"

>>> ob2.set_smell("Good", ob1)
>>> ob1.smell
"Good"

【讨论】:

  • 等等... self.other.color 是如何到达 ob1 的?
  • @calccrypto:哎呀,我拼错了。固定的。 self.other ob1.
  • 我对此有一个减号!?哈哈,人真好笑。 (没关系,反正我今天已经达到了我的声望上限,所以没有丢分。:))
  • @calccrypto:是的,我不认为是你。这很有趣,仅此而已。
猜你喜欢
  • 2015-04-03
  • 2022-01-06
  • 2010-09-19
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多