类方法的目的是什么?我正在教自己Python,我最近的教训是Python不是Java,因此我花了一些时间将所有的Class方法转换为函数。我现在意识到我不需要使用Class方法来处理staticJava中的方法,但现在我不确定何时使用它们。我能找到的关于Python类方法的所有建议都是像我这样的新手应该避开它们,而标准文档在讨论时最不透明。有没有人有一个在Python中使用Class方法的好例子,或者至少可以有人告诉我什么时候可以明智地使用Class方法?
3 回答
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
类方法适用于需要具有非特定于任何特定实例的方法但仍以某种方式涉及该类的方法。关于它们最有趣的是它们可以被子类覆盖,这在Java的静态方法或Python的模块级函数中根本不可能。
如果你有一个类MyClass
,以及一个在MyClass(工厂,依赖注入存根等)上运行的模块级函数,那就把它做成一个classmethod
。然后它将可用于子类。
SMILET
TA贡献1796条经验 获得超4个赞
工厂方法(替代构造函数)确实是类方法的经典示例。
基本上,类方法适用于任何时候您希望有一个自然适合类的命名空间但不与该类的特定实例相关联的方法。
例如,在优秀的单路模块中:
当前目录
Path.cwd()
返回实际的当前目录; 例如,
Path("/tmp/my_temp_dir")
。这是一种类方法。.chdir()
使self成为当前目录。
由于当前目录是进程范围的,因此该cwd
方法没有与之关联的特定实例。但是,更改cwd
到给定Path
实例的目录应该是一个实例方法。
嗯... Path.cwd()
确实返回一个Path
实例,我猜它可以被认为是一种工厂方法......
添加回答
举报
0/150
提交
取消