within the class调用静态方法的pythonic种方法是什么?

class SomeClass:
    @staticmethod
    def do_something(x: int) -> int:
        return 2*x + 17

    def foo(self) -> None:
        print(self.do_something(52))      # <--- this one?
        print(SomeClass.do_something(52)) # <--- or that one?

推荐答案

这完全取决于您的用例,因为在子类化的上下文中,这两种方法做的事情不同.考虑以下因素:

class OtherClass(SomeClass):
    @staticmethod
    def do_something(x: int) -> int:
        return 42

OtherClass().foo()

这将打印42121,因为self.do_something(52)使用method resolution order,而SomeClass.do_something(52)总是引用相同的方法(除非名称SomeClass绑定到不同的对象).

Python相关问答推荐

在Python中对分层父/子列表进行排序

Pandas 第二小值有条件

对Numpy函数进行载体化

ModuleNotFound错误:没有名为Crypto Windows 11、Python 3.11.6的模块

PywinAuto在Windows 11上引发了Memory错误,但在Windows 10上未引发

处理(潜在)不断增长的任务队列的并行/并行方法

无法通过python-jira访问jira工作日志(log)中的 comments

如果满足某些条件,则用另一个数据帧列中的值填充空数据帧或数组

多指标不同顺序串联大Pandas 模型

基于多个数组的多个条件将值添加到numpy数组

在二维NumPy数组中,如何 Select 内部数组的第一个和第二个元素?这可以通过索引来实现吗?

使用嵌套对象字段的Qdrant过滤

有没有办法在不先将文件写入内存的情况下做到这一点?

我什么时候应该使用帆布和标签?

仅取消堆叠最后三列

如何在Polars中创建条件增量列?

#将多条一维曲线计算成其二维数组(图像)表示

Groupby并在组内比较单独行上的两个时间戳

如何在Python中画一个只能在对角线内裁剪的圆?

生产者/消费者-Queue.get by list