除了创建备用构造函数之外,在Python中使用@classmethod

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

我试图想到@classmethod特殊装饰器的用例,除了创建一个“重载”(我猜不是真的重载,因为方法名称与init不同)构造函数,但是想不到任何。

我查看了像What's an example use case for a Python classmethod?这样的帖子,但只能找到指向备用构造函数的用例。

我能想到的另一个案例是将一个方法与一个类相结合来封装相关的逻辑(如上面链接的帖子中的@samplebias所提到的),但我认为@staticmethod更适合将相关逻辑封装到一个类中(如某人)评论@samplebias的帖子)。

任何人都可以帮我识别这个特殊装饰的一些额外用例吗?

python python-decorators
1个回答
0
投票

我正在使用Python在OOP上阅读一些材料,并发现@classmethod装饰器的一个用例除了作为重载的构造函数。

在直接对类对象执行(更改)时使用类方法是有意义的。例如,如果你有一个Employee对象和base_raise_factor作为类变量,那么在Employee上创建一个类方法来改变这个变量是有意义的。

您可以说我们可以直接将Employee.base_raise_factor设置为某种东西,但我认为最好坚持使用encapsulation而不是直接修改内部结构。另外,我们可以在更新base_raise_factor的类方法中定义一些额外的逻辑。

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