如何使用Python中实例的函数和变量定义类变量

问题描述:

有没有方法使用实例的变量和函数定义类变量?由于如何使用Python中实例的函数和变量定义类变量

简化代码如下所示:

def ClassA(): 
    X = self.func(self.a) 

    def __init__(self, avalue): 
     self.a = avalue 

    def func(self): 
     return self.a + 5 

NameError:名字 '自我' 是没有定义

+2

你不能这样做,因为类必须存在于类实例之前。 –

+1

您可以从实例设置类变量,是的。即使有实例,您也无法访问任何实例变量。也许你误解了什么是一个实例......? – deceze

首先,您需要定义使用class,不def一类。

self只需要在类的函数定义中使用,因为它们改变了范围。他们之外你不需要它: x = func(a)

但是,您的代码无法正常工作,因为该实例尚不存在。

我猜你试图做的是:

class ClassA(): 
    def __init__(self,avalue): 
     self.a = avalue 
     self.X = self.func 

    def func(self): 
     return self.a + 5 

b = ClassA(43) 
b.X() 

输出

48 

class A(): 
    def __init__(self): 
     self.y = 0 

    def m(self): 
     A.x = 1 

b = A() 
#print(b.x) doesn't work here since we haven't made it yet. 
b.m() 
print(b.x) #1 
c = A() 
print(c.x) #1 
A.x = 2 
print(c.x) #2 
print(b.x) #2 
print(vars(A)) #{'__dict__': <attribute '__dict__' of 'A' objects>, '__module__': 'builtins', 'x': 2, '__init__': <function A.__init__ at 0x7f15f800d730>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None, 'm': <function A.m at 0x7f15f800d7b8>} 

你在寻找这样的事情?