【问题标题】:Accessing a method variable from another class从另一个类访问方法变量
【发布时间】:2014-10-10 11:30:10
【问题描述】:

所以我有一些看起来像这样的东西

class MyClass():
    def someMethod(self):
        sprites = SomeClassInstance()

class MyClass2():
    def someMethod2(self):
         #The answer to the question goes here

有没有办法从 MyClass2() 访问精灵?最重要的是,没有这样的声明

A = MyClass() 

只有这个

A = MyClass().someMethod()

【问题讨论】:

  • 你能解释一下你想要达到的目标吗?似乎有更好的方法可以做到这一点。
  • 如果您向我们提供更多背景信息,我们可能会为您提供更好的答案
  • 如果您不保留MyClass 实例,不妨将其写为myfunction() 而不是MyClass().someMethod()
  • 不要忘记接受解决方案,如果您发现其中任何一个解决了您的问题。如果答案不令人满意,请随时提出更多问题。

标签: python class variables methods pygame


【解决方案1】:

您的 sprites 变量是 MyClass.someMethod 的本地变量。相反,将其附加到 self 以使其可以从方法外部访问:

class MyClass():
    def someMethod(self):
        self.sprites = SomeClassInstance()

class MyClass2():
    def someMethod2(self):
         #The answer to the question goes here
         myClass = myClass()
         myClass.someMethod()             
         sprites = myClass.sprites

如果你希望精灵是一个静态变量,在类体中定义它:

class MyClass():
    sprites = SomeClassInstance()
    def someMethod(self):
        pass

class MyClass2():
    def someMethod2(self):
         #The answer to the question goes here
         MyClass.sprites

【讨论】:

    【解决方案2】:

    这很 hacky...但是如果您只是想按照自己的方式完成工作,您可以使用 global 变量:

    SPRITES = None
    
    class A(object):
        def setter(self):
            global SPRITES
            SPRITES = "mysprite"
    
    class B(object):
        def getter(self):
            global SPRITES
            print SPRITES
    
    a, b = A(), B()
    a.setter()
    b.getter()
    

    当然,A 和 B 的所有实例都将共享一个变量,因此这可能不是您想要的。

    【讨论】:

      猜你喜欢
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-06
      相关资源
      最近更新 更多