从另一个类访问方法变量

时间:2014-08-17 10:17:07

标签: python class variables methods pygame

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

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()

2 个答案:

答案 0 :(得分:1)

您的精灵变量是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

如果你想要sprite是一个静态变量,请在类体中定义它:

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

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

答案 1 :(得分:0)

这非常hacky ......但是如果你只想按照自己的方式完成任务,可以使用全局变量:

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的所有实例都会共享一个变量,所以这可能不是你想要的。