如何从类内的静态变量调用静态方法?

时间:2018-11-23 22:09:13

标签: python-3.x oop

我正在尝试使用静态var和静态方法实现一个简单的类:

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 个答案:

答案 0 :(得分:1)

您似乎想使用来自与要定义的同一类的静态函数初始化静态类变量的值。您可以使用以下answer语法,但要添加参数:

class X:
    @staticmethod
    def do_something(par):
        return par

    static_var = do_something.__func__(5)


print(X.static_var)

输出:

5

Try it!

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

话虽如此,有关您要实现的基本设计目标的更多信息可能会揭示一种更好的方法。