0

我正在尝试编写一个包含多个类的模块。我希望每个类中的变量名相同,但希望值不同。这样每个定义都将使用在其自己的类的顶部定义的变量。

例如:

class assign():
    global a , b
    a = 1
    b = 2

    def aa(x):
        return  a*x



class assign1():
    global a, b
    a = 5
    b = 10


    def aa(x) :
        return a*x

这产生:

print(assign.aa(3))
=15

print(assign1.aa(3))
=15

全局值不会在不同的类之间切换,我希望它们能够如此。

4

1 回答 1

1

有趣——我以前从未global在类命名空间中见过......基本上发生的事情是当你创建你的类时,你添加ab到全局命名空间。然后,在您的方法调用中,您a从全局命名空间中获取(因为没有局部变量a)。你可能想要的是:

#while we're at it, get in the habit of inheriting from object
# It just makes things nicer ...
class assign(object): 
    a = 1
    b = 2

    def aa(self,x):
        return  self.a*x


class assign1(object):
    a = 5
    b = 10

    def aa(self,x) :
        return self.a*x

现在,当您调用该方法时,python 将首先在实例上aa查找属性。a当在实例上找不到它时,将检查该类(并使用,因为这些类都有一个a属性)。

于 2013-02-06T04:52:04.650 回答