小编Rou*_*nak的帖子

@classmethod的用法如何导致输出差异?

当我遇到这种困境时,我正在学习Python中的类和对象.下面是两个相同代码的情况,一个没有@classmethod,另一个有@classmethod:

#without @classmethod
>>> class Human:  
...     name = "Rounak"  
...     def change_name(self, new_name):  
...             self.name=new_name  
...   
>>> Human().change_name("Agarwal")  
>>> print(Human().name)  
Rounak  

#with @classmethod
>>> class Human:  
...     name = "Rounak"  
...     @classmethod  
...     def change_name(self, new_name):  
...             self.name=new_name  
...   
>>> Human().change_name("Agarwal") 
>>> print(Human().name)  
Agarwal  
Run Code Online (Sandbox Code Playgroud)

如您所见,不使用时@classmethod,名称不会更改RounakAgarwal.我似乎不明白怎么做.

@classmethod仔细阅读了Python文档中的定义,并对Stack Overflow中的各种问题进行了详细解释,@classmethod但是我仍然不明白它是如何导致输出的这种差异的.我是Python的新手,所以如果我缺少一些基础知识,请告诉我.

python

6
推荐指数
1
解决办法
73
查看次数

标签 统计

python ×1