为了账号安全,请及时绑定邮箱和手机立即绑定

对于永远不会实例化的类的类方法,Python 编码标准是什么?

对于永远不会实例化的类的类方法,Python 编码标准是什么?

PHP
临摹微笑 2023-11-09 10:13:59
我正在读一本书,其中他们使用 Python 类作为容器将多个函数捆绑在一个组中。该类永远不会被实例化。对于此类中的方法,没有clsorself参数(这让我很困惑)。由于我熟悉类(将/可能被实例化)和@classmethods,我想知道这些永远不会被实例化的类是否有名称和 PEP 指南?通过将这些方法放在不同的文件而不是类中可以实现相同的名称间距。但是可能有充分的理由为此目的而选择一个类吗?在下面的示例中,您可以看到方法“addition”和“addition_2”的行为类似,但类被实例化时除外(当然)。因此,在您永远不会实例化该类的情况下,您似乎不需要 and@classmethod参数。但这是好的做法吗?cls# python 3.8.5class Operations:    @classmethod    def addition(cls, value, value_2):        print(value + value_2)    def addition_2(value, value_2):        print(value + value_2)Operations.addition(value=3, value_2=5)  # 8Operations.addition(3, 5)  # 8Operations().addition(value=3, value_2=5)  # 8Operations().addition(3, 5)  # 8Operations.addition_2(value=3, value_2=5)  # 8Operations.addition_2(3, 5)  # 8# expected errors:Operations().addition_2(value=3, value_2=5)  # TypeError: addition_2() got multiple values for argument 'value'Operations().addition_2(3, 5)  # TypeError: addition_2() takes 2 positional arguments but 3 were given
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

您可以拥有一个永远不会被实例化的类,它只是函数的容器:


class Operations:


    @staticmethod

    def addition(value, value_2):

        print(value + value_2)


    @staticmethod

    def subtraction(value, value_2):

        print(value + value_2)

然而,正如其他人所说,这并不是真正的最佳实践,您可以将这些函数存储在不同的模块中,即一个名为操作的 .py 文件,您可以通过导入它来使用它:


import operations


operations.addition(1, 2)


查看完整回答
反对 回复 2023-11-09
  • 1 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信