[英]Assign Python class variable with a method of that class
我有这样的代码:
def my_func():
pass
class MyClass():
class_variable = my_func()
pass
i = MyClass()
由于my_func
在逻辑上与MyClass
相关,并且在它之外没有任何作用,所以我宁愿有这样的东西:
class MyClass():
class_variable = my_func()
def my_func():
pass
i = MyClass()
当然,上面的方法不起作用,因为在my_func
未定义它。 还有其他从类内部分配类变量的方法吗?
我个人将my_func()
放在课堂之外 。 当然,它只能用于类定义,但是如果一旦定义了类就没有用,则不应将其作为类API的一部分。
如果即使在类创建后仍应将my_func()
函数与该类一起使用,则仍可以使用MyClass.my_func()
作为静态方法来使该类起作用。 在这种情况下限定第一设置类变量之前的函数:
class MyClass():
@staticmethod
def my_func():
pass
class_variable = my_func.__func__()
@staticmethod
方法不是严格必需的,因为在设置class_variable
, my_func
仍是类定义主体中的本地名称。
但是,由于无论如何都将其用作静态函数,因此也可以将其标记为静态函数。 但是,优点是MyClass.my_func()
现在也可以使用。
因为@staticmethod
方法不会绑定到类或实例属性上下文之外,所以您确实需要通过使用__func__
属性访问包装函数来首先对其进行包装。
演示:
>>> class MyClass():
... @staticmethod
... def my_func():
... return 'foobar'
... class_variable = my_func.__func__()
...
>>> MyClass.class_variable
'foobar'
>>> MyClass.my_func()
'foobar'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.