关于python 3.x:如何从类中的静态变量调用静态方法?

How to call static method from a static variable inside a class?

我试图用静态变量和静态方法实现一个简单的类:

1
2
3
4
5
6
7
8
class X(object):
    @staticmethod
    def do_something(par):
        # do something with parameter par
        #...
        return something

    static_var = X.do_something(5) #<-- that's how I call the function

但我有一个错误:NameError: name 'X' is not defined

如何调用这个静态函数?


您似乎希望使用与所定义的类相同的静态函数初始化静态类变量的值。您可以使用此答案中的以下语法进行此操作,但需要添加一个参数:

1
2
3
4
5
6
7
8
9
class X:
    @staticmethod
    def do_something(par):
        return par

    static_var = do_something.__func__(5)


print(X.static_var)

输出:

1
5

试试看!

直接在X定义中引用类X的静态方法失败,因为X尚不存在。但是,由于您已经定义了@staticmethod do_something属性,因此可以用参数调用其__func__属性,并将结果赋给static_var属性。

尽管如此,关于您试图实现的底层设计目标的更多信息可能会揭示一种更好的方法。