Python 如何用静态方法初始化类变量?
在上面的示例中,我无法初始化类Python 如何用静态方法初始化类变量?,python,python-3.x,function,class,Python,Python 3.x,Function,Class,在上面的示例中,我无法初始化类A属性X。 PyCharm编辑器抱怨未解析的引用“A”。但是,使用类似的方法初始化Y的实例属性似乎没有问题 如何使用来自同一类的静态方法初始化类属性?您的问题与我曾经问过的问题非常相似@DeepSpace关于类如何在class定义期间不存在的评论就是原因 下面是如何使我的问题的公认答案适应您自己的情况(在类定义本身中定义类属性): 正如@klausd.所评论的,另一种方法是在定义类之后(在类主体之外) 初始化Y的instance属性时不会遇到问题,因为它发生在类实例
A
属性X
。
PyCharm编辑器抱怨未解析的引用“A”
。但是,使用类似的方法初始化Y
的实例属性似乎没有问题
如何使用来自同一类的静态方法初始化类属性?您的问题与我曾经问过的问题非常相似@DeepSpace关于类如何在
class
定义期间不存在的评论就是原因
下面是如何使我的问题的公认答案适应您自己的情况(在类定义本身中定义类属性):
正如@klausd.所评论的,另一种方法是在定义类之后(在类主体之外)
初始化
Y
的instance属性时不会遇到问题,因为它发生在类实例的方法中(因此该类在该点上是完全定义的)。您的问题与我曾经问过的问题非常相似@DeepSpace关于类如何在class
定义期间不存在的评论就是原因
下面是如何使我的问题的公认答案适应您自己的情况(在类定义本身中定义类属性):
正如@klausd.所评论的,另一种方法是在定义类之后(在类主体之外)
初始化Y
的instance属性时不会遇到问题,因为它发生在类实例的方法中(因此该类在该点上是完全定义的)。您不能(至少不能从a
中)。类属性在类定义时定义。同样地,当执行x=A.initX()
时,A
尚未“完全”存在,因此在类的整个定义之后,您收到的错误运行A.x=A.initX()
。您不能(至少不能从A
中)。类属性在类定义时定义。同样地,当执行x=A.initX()
时,A
尚未“完全”存在,因此在类的整个定义之后,您收到的错误将运行A.x=A.initX()
。
class A:
x = A.initX()
def __init__(self):
self.y = A.initY()
@staticmethod
def initX():
return 'X'
@staticmethod
def initY():
return 'Y'
class A:
def __init__(self):
self.y = A.initY()
@staticmethod
def initX():
return 'X'
@staticmethod
def initY():
return 'Y'
x = initX.__func__() # Define class attribute.
print(A.x) # -> X