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

时间:2016-10-04 15:57:17

标签: python class scope

有没有办法使用实例的变量和函数定义类变量?感谢

简化代码如下所示:

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

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

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

NameError:名称'self'未定义

3 个答案:

答案 0 :(得分:0)

首先,您使用observe定义一个类,而不是class

def只需要在类的函数定义中使用,因为它们会改变范围。在他们之外你不需要它: self

但是你的代码无论如何都不会起作用,因为实例还不存在。

答案 1 :(得分:0)

我猜你试图做的是:

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

答案 2 :(得分:0)

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>}

你会找这样的东西吗?