gpt4 book ai didi

python - 类中的方法应该默认为classmethod吗?

转载 作者:太空宇宙 更新时间:2023-11-04 10:47:15 26 4
gpt4 key购买 nike

我当时正在处理大型类层次结构,并认为默认情况下,类中的所有方法可能都应该是类方法。

我的意思是,很少有人需要更改对象的实际方法,并且可以显式传入所需的任何变量。此外,这样一来,人们可以更改对象本身的方法数量就会减少(以另一种方式进行更多的输入),并且人们会更倾向于默认“功能性”。

但是,我是一个新手,想找出我的想法中的缺陷(如果有的话:)。

最佳答案

将类方法作为默认值是众所周知但已过时的范例。它被称为模块化编程。通过这种方式,您的类(class)成为有效的模块。

面向对象范式 (OOP) 通常被认为优于模块化范式(并且更年轻)。主要区别恰恰是部分代码默认关联到一组数据(称为对象)——因此不是类方法。

实践证明这更有用。结合其他 OOP 架构思想(如继承),这提供了更直接的方式来在开发人员的头脑中表示模型。

使用对象方法,我可以编写可用于各种类型对象的抽象代码;在编写例程时,我不必知道对象的类型。例如我可以编写一个 max() 例程来比较列表的元素以找到最大的元素。然后使用 > 运算符进行比较,该运算符实际上是元素的对象方法(在 Python 中是 __gt__(),在 C++ 中是 operator> () 等)。现在对象本身(可能是一个数字,可能是一个日期,等等)可以处理自身与另一个同类对象的比较。在代码中,这可以写成

a > b   # in Python this calls a.__gt__(b)

虽然只有类方法,但您必须将其写成

type(a).__gt__(a, b)

可读性差得多。

关于python - 类中的方法应该默认为classmethod吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16439842/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com