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。
如何调用这个静态函数?
- 你在哪里定义par?
- 你想做什么?par是do_something中的一个参数,您试图在该定义之外使用par。
- @红蟋蟀,我不知道从哪里来定义它。我希望有人能帮忙。
- @如何正确定义ANS?我试着从静态变量调用静态函数,当然我做得不好,但我不知道怎么做,这就是问题所在。
- 您的方法中没有使用par,所以只需去掉它。
- @红蟋蟀,你什么意思?这个静态函数接受一些参数,我怎样才能去掉它?
- 只需去掉代码中对par的任何引用。在do_something()的声明中去掉它,当你调用do_something()时不要使用它。
- 不清楚你所说的"正确"是什么意思,因为你对这段代码的目标不清楚。您可以消除该参数,而不向函数传递任何内容,或者,如果您选择保留该参数,则可以传递一个存在的有效值。这取决于您,但是无论您做什么,都不能将不存在的变量传递给函数。
- @redcricket函数必须得到参数,因为我需要在函数内部使用它。我想让它和参数一起工作,怎么做?
- 请查看更新后的问题。
- 您需要定义par--这个变量不存在。我们在尽力帮忙!
- @我真的很感谢你的帮助,但我不明白我该怎么做。你看到更新版本了吗?你能用工作代码来回答这个问题吗?谢谢!
- @这只是一个打字错误。我已经修好了。
- 让我们在聊天中继续讨论。
您似乎希望使用与所定义的类相同的静态函数初始化静态类变量的值。您可以使用此答案中的以下语法进行此操作,但需要添加一个参数:
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) |
输出:
试试看!
直接在X定义中引用类X的静态方法失败,因为X尚不存在。但是,由于您已经定义了@staticmethod do_something属性,因此可以用参数调用其__func__属性,并将结果赋给static_var属性。
尽管如此,关于您试图实现的底层设计目标的更多信息可能会揭示一种更好的方法。