我直接在这样的类上调用一个方法:

MyClass.action("Hello World!")

在被调用的方法中,我需要引用另一个方法:

class MyClass:
    def action(data):
        print('first')
        # vvv How to perform this call?
        next_action(data)

    def next_action(data):
        print('second', data)

通常,我会使用self to access the method and attributes,但通过调用类上的方法,self无法引用任何实例.在这种情况下,我如何从一种方法访问另一种方法?

推荐答案

根据您对它的调用方式,您似乎正在try 定义类方法.包括@classmethod名装饰师.然后它将传递类作为第一个参数,您可以使用它来调用它.

class MyClass:
    @classmethod
    def action(cls, data):
        print('first')

        cls.next_action(data)

    @classmethod
    def next_action(cls, data):
        print('second', data)

MyClass.action('Hello World!')

事实上,如果您实际上正在try 创建实例方法,那么您需要从实例中调用它们.在这种情况下,您可以在不使用classmethod decorator的情况下定义类,并从实例中调用它.Python随后将传递对实例的引用作为第一个参数.但您需要创建实例来调用它:

class MyClass:
    def action(self, data):
        print('first')

        self.next_action(data)

    def next_action(self, data):
        print('second', data)

instance = MyClass()
instance.action('Hello World!')

Python相关问答推荐

Pandas 滚动最接近的价值

将输入管道传输到正在运行的Python脚本中

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

从numpy数组和参数创建收件箱

切片包括面具的第一个实例在内的眼镜的最佳方法是什么?

如何从在虚拟Python环境中运行的脚本中运行需要宿主Python环境的Shell脚本?

无法使用requests或Selenium抓取一个href链接

无法定位元素错误404

形状弃用警告与组合多边形和多边形如何解决

Django admin Csrf令牌未设置

Python全局变量递归得到不同的结果

将链中的矩阵乘法应用于多组值

如何使用matplotlib查看并列直方图

利用SCIPY沿第一轴对数组进行内插

Polars定制函数返回多列

如何将一个文件的多列导入到Python中的同一数组中?

如何在基于时间的数据帧中添加计算值

如何通过特定导入在类中执行Python代码

将参数从另一个python脚本中传递给main(argv

如何在开始迭代自定义迭代器类时重置索引属性?