您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> 其他语言 >> python类中的方法都定义为@classmthod的,好不好

python类中的方法都定义为@classmthod的,好不好

来源:网络整理     时间:2018/1/29 1:01:53     关键词:

关于网友提出的“ python类中的方法都定义为@classmthod的,好不好”问题疑问,本网通过在网上对“ python类中的方法都定义为@classmthod的,好不好”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: python类中的方法都定义为@classmthod的,好不好
描述:

python类中的方法都定义为@classmthod的,好不好


解决方案1:

如果都定义成类方法,如何实现基于实例(self)的操作。虽然首实参并不要求一定是cls,但是这样做不pythonic

解决方案2:

如果你是FP的话可以,如果你是OOP的话你会被同事骂的

解决方案3:

不好,python 中有 classmethod 和 staticmethod 两个装饰器。

简单来说,被 classmethod 装饰的方法是类似于 __init__() 的构造器(这里写错误了,请查看评论),因为 python 里没有构造器重载,按照约定,它返回一个类的实例。

上面这一句重整理一下,改正错误,感谢 @起风了 指正:classmathod 装饰器的典型场景之一是被装饰的方法作为备选构造器,这种场景下它返回一个本类的实例。
而 staticmethod 才是类似于 java 中类的静态方法。

你要说全用 staticmethod,我可以理解为是一个工具类,那这种写法风格可以直接变为放置在 module 下的方法。
但全用 classmethod,这个用意太特殊了,全部的方法都是生成这个类的实例,而没有对应的实例的操作方法。你要想好是不是适用于你要处理的场景。

(答案被踩了一下,还是请给个赐教,非常感谢)


以上介绍了“ python类中的方法都定义为@classmthod的,好不好”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4537124.html

相关图片

相关文章