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

问题描述 投票:0回答:3

代码示例: 我如何在不使用“A”的情况下运行此代码

    class A:
        @staticmethod
        def a():
            print('a')
    
        @staticmethod
        def b():
            print('b')
            print(**A**.a())
    
    A.a()
python static-methods
3个回答
0
投票

您可以通过

__class__
参考课程。

试试这个:

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

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

0
投票

我认为唯一的方法可能是创建一个包,一个包含一个甚至空的 _init_.py 文件的文件夹(例如 src),一个包含你的类的 A.py 文件,以及在该文件夹上方的 main.c 文件。包含该行的 py 文件

from src.A import *

然后你可以打电话

a()

没有班级名称


0
投票

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

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. 


© www.soinside.com 2019 - 2024. All rights reserved.