【问题标题】:How to call static methods in functions? Scope of static methods如何在函数中调用静态方法?静态方法的范围
【发布时间】:2020-06-21 23:12:00
【问题描述】:

假设我创建了一个具有静态方法的类,并希望从另一个类方法或脚本函数运行该方法。

静态方法的作用域是什么?

例如:

def Class myClass:

     @staticmethod
     def mystaticmethod(input):
          print("blah")

def scriptfunc():
     myClass.mystaticmethod()

这有效吗?

【问题讨论】:

  • 你试过了吗?当你尝试它时发生了什么?
  • def Class myclass 不是有效的 Python

标签: python python-3.x object scope static-methods


【解决方案1】:

您可以在任何可以访问ClassName 的地方执行ClassName.methodName()(因此,在同一个封闭范围内,或在导入ClassName 后的另一个模块中。

Python 有docs on namespace precedences, which you can read here。只要说。。。就够了;对于一般的对象,只要对象本身是可访问的,它们的“私有”命名空间就可以通过点运算符完全访问。这包括直接在其中定义的所有变量和函数。

【讨论】:

    【解决方案2】:

    你所拥有的都是有效的。

    但过于详细说明@staticmethod的目的,这里是简短答案:

    声明@staticmethod 意味着两件事:

    1. 您不必关心方法的属性或属性,因为它独立于其他类,
    2. 您不需要创建__init__ 或超级方法来覆盖其内容或属性,也不需要子类/父类来处理自身。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多