如何在不使用 class 名称的情况下从静态方法调用静态方法

how can i call static method from static method without using class name

代码示例: 我如何 运行 此代码而不使用 'A'

    class A:
        @staticmethod
        def a():
            print('a')
    
        @staticmethod
        def b():
            print('b')
            print(**A**.a())
    
    A.a()

如果您使用装饰器 @class 方法,参数 cls 将传递给函数,该函数可以引用 class 名称而无需显式编码 class 名称,假设您想从同一个 class 的另一个静态方法调用此函数。如果用例推迟,请这样说,因为这可能只是一个合适的选择,因为您想从相同 Class.

的静态方法调用它
class A:

    @classmethod
    def a(cls, args...):
      pass

    @classmethod
    def b(cls, args...):
      cls.a()


A.b()  # notice that you dont need an instance of the class to call a class method only the class. 


我认为唯一的方法可能是创建一个包,所以一个文件夹(例如 src)包含一个甚至空的 _init_.py 文件,一个 A.py 文件包含您的 class 和文件夹上方的 main.py 文件包含行

from src.A import *

那你可以打电话

a()

没有 class 名字

你可以用__class__引用class。

试试这个:

class A:
    @staticmethod
    def a():
        print('a')

    @staticmethod
    def b():
        print('b')
        __class__.a() # notice here we're not using `A`
    
A.b()