代码之家  ›  专栏  ›  技术社区  ›  mimic

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

  •  0
  • mimic  · 技术社区  · 6 年前

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

    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 回复  |  直到 6 年前
        1
  •  1
  •   ggorlen Hoàng Huy Khánh    6 年前

    您似乎希望使用与所定义的类相同的静态函数初始化静态类变量的值。您可以使用以下语法来完成此操作 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 .

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