如何在函数中调用静态方法?静态方法的范围
How to call static methods in functions? Scope of static methods
假设我创建了一个带有静态方法的 class 并希望从另一个 classes 方法或脚本函数中 运行 该方法。
静态方法的范围是什么?
例如:
def Class myClass:
@staticmethod
def mystaticmethod(input):
print("blah")
def scriptfunc():
myClass.mystaticmethod()
这有效吗?
您可以从 ClassName
可访问的任何地方执行 ClassName.methodName()
(因此,在相同的封闭范围内,或在导入 ClassName
后的另一个模块中)。
Python 有 docs on namespace precedences, which you can read here。只要说。。。就够了;对于一般的对象,它们的 'private' 命名空间完全可以通过点运算符访问,只要对象本身是可访问的。这包括直接在其中定义的所有变量和函数。
你所拥有的是有效的。
但是@staticmethod
的目的太详细了,这里简短回答:
声明 @staticmethod
意味着两件事:
- 您不关心方法的特性或特性,因为它独立于其他 classes,
- 您不需要创建
__init__
或超级方法来覆盖它的内容或属性,也不需要 subclass/parent class 来处理它自己。
假设我创建了一个带有静态方法的 class 并希望从另一个 classes 方法或脚本函数中 运行 该方法。
静态方法的范围是什么?
例如:
def Class myClass:
@staticmethod
def mystaticmethod(input):
print("blah")
def scriptfunc():
myClass.mystaticmethod()
这有效吗?
您可以从 ClassName
可访问的任何地方执行 ClassName.methodName()
(因此,在相同的封闭范围内,或在导入 ClassName
后的另一个模块中)。
Python 有 docs on namespace precedences, which you can read here。只要说。。。就够了;对于一般的对象,它们的 'private' 命名空间完全可以通过点运算符访问,只要对象本身是可访问的。这包括直接在其中定义的所有变量和函数。
你所拥有的是有效的。
但是@staticmethod
的目的太详细了,这里简短回答:
声明 @staticmethod
意味着两件事:
- 您不关心方法的特性或特性,因为它独立于其他 classes,
- 您不需要创建
__init__
或超级方法来覆盖它的内容或属性,也不需要 subclass/parent class 来处理它自己。