我试图编写一个包含多个类的模块。我想在每个类中使用相同的变量名,但希望值不同。这样每个定义都将使用在其自己的类顶部定义的变量。
例如:
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
This Produces:
print(assign.aa(3))
=15
print(assign1.aa(3))
=15
全局值不会在不同的类之间切换,我希望它们是。
答案 0 :(得分:1)
有趣 - 我之前从未见过类名称空间中的global
...基本上,当您创建类时,会向全局添加a
和b
命名空间。然后,在方法调用中,从全局命名空间中选择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
现在,当您调用aa
方法时,python将首先在实例上查找属性a
。当在实例上找不到它时,将检查该类(并使用,因为类都具有a
属性)。