使用内部类而不是全局变量

时间:2013-01-28 22:33:54

标签: python class nested ros

我正在尝试使用类来保存状态而不是全局变量。作为示例,对象内部想要引用变量Outer.x(参见下面的示例)

我这样做是因为我有一个需要自己的类输入(ros_smach

的库
class Outer:
  def __init__(self):
    self.x = 5

  class Inner:
    def __init__(self):
      self.y = 10

    def x(self):
      return Outer.x    ### this is not proper ###


outer = Outer()
inner = outer.Inner()
print outer.x
print inner.y
print inner.x()

谢谢你们

1 个答案:

答案 0 :(得分:0)

我并不真正理解(并因此批准)使用“外部”类来保持状态 - 你将一种形式的全局替换为另一种形式 - 这很少是一个好主意。但是,要回答您的问题,您的内部类没有引用外部实例。

class Outer:
  def __init__(self):
    self.x = 5
    self.inner = Inner(self)

  class Inner:
    def __init__(self, outer):
      self.outer = outer
      self.y = 10

    def x(self):
      return self.outer.x

o = Outer()
print o.x()
print o.inner.y