我想使用我在一个类的函数中声明的变量,在另一个类中。
例如,我想在另一个类中使用变量“j”。是否可以?(我在某处读到它可能与实例变量有关,但完全无法理解这个概念)。
class check1:
def helloworld(self):
j = 5
我想使用我在一个类的函数中声明的变量,在另一个类中。
例如,我想在另一个类中使用变量“j”。是否可以?(我在某处读到它可能与实例变量有关,但完全无法理解这个概念)。
class check1:
def helloworld(self):
j = 5
class check1:
def helloworld(self):
self.j = 5
check_instance=check1()
print (hasattr(check_instance,'j')) #False -- j hasn't been set on check_instance yet
check_instance.helloworld() #add j attribute to check_instance
print(check_instance.j) #prints 5
但是您不需要将新属性分配给类实例的方法...
check_instance.k=6 #this works just fine.
现在您可以像使用任何其他变量一样使用check_instance.j
(或)。check_instance.k
在您了解以下内容之前,这似乎有点像魔术:
check_instance.helloworld()
完全等价于:
check1.helloworld(check_instance)
(如果您稍微考虑一下,那就解释了self
参数是什么)。
我不完全确定您要在这里实现什么-还有类变量由类的所有实例共享...
class Foo(object):
#define foolist at the class level
#(not at the instance level as self.foolist would be defined in a method)
foolist=[]
A=Foo()
B=Foo()
A.foolist.append("bar")
print (B.foolist) # ["bar"]
print (A.foolist is B.foolist) #True -- A and B are sharing the same foolist variable.
j
其他班级看不到;但是,我认为您的意思是self.j
,可以。
class A(object):
def __init__(self, x):
self.x = x
class B(object):
def __init__(self):
self.sum = 0
def addA(self, a):
self.sum += a.x
a = A(4)
b = B()
b.addA(a) # b.sum = 4
使用类继承很容易“共享”实例变量
例子:
class A:
def __init__(self):
self.a = 10
def retb(self):
return self.b
class B(A):
def __init__(self):
A.__init__(self)
self.b = self.a
o = B()
print o.a
print o.b
print o.retb()