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