Sca*_*ffe 237 python terminology class object self
为什么cls有时self在Python类中使用而不是作为参数?
例如:
class Person:
def __init__(self, firstname, lastname):
self.firstname = firstname
self.lastname = lastname
@classmethod
def from_fullname(cls, fullname):
cls.firstname, cls.lastname = fullname.split(' ', 1)
Run Code Online (Sandbox Code Playgroud)
小智 39
cls暗示该方法属于该类,而self暗示该方法与该类的实例相关,因此成员与cls类名访问,其中具有self的那个通过类的实例访问...它是相同的概念如static member与non-static members在Java中,如果你是从Java背景.
The*_*ist 16
这是一个非常好的问题,但并不像缺乏问题那样.使用'self'和'cls'方法之间存在差异,但类似地它们在同一个地方
def moon(self,moon_name):
self.MName =moon_name
#but here cls method its use is different
def moon(cls,moon_name):
instance=cls()
instance.MName=moon_name
Run Code Online (Sandbox Code Playgroud)
现在你可以看到两个都是月亮函数,但是一个可以在类中使用,而其他函数名称月亮可以用于任何类.
对于实用的编程方法:
在设计圆类时我们使用区域方法作为cls而不是self,因为我们不希望区域仅限于特定的圆类.
Rah*_*Jha 13
如果您想通过实例访问方法,请将第一个参数保留为 self。例如:
class Test:
def hello(self, name):
print ('hello ', name)
obj = Test()
obj.hello('Rahul')
Run Code Online (Sandbox Code Playgroud)
如果您想像在静态类中那样使用类名访问方法,最好使用 cls 作为方法中的第一个参数。例如:
class Test:
def hello(cls, name):
print ('hello ', name)
Test.hello('Rahul')
Run Code Online (Sandbox Code Playgroud)
小智 6
不是接受自参数,类方法采取CLS参数指向类-and不是对象实例-当该方法被调用。由于类方法只能访问此 cls 参数,因此无法修改对象实例 state。那将需要访问 self 。但是,类方法仍然可以修改适用于该类所有实例的类状态。
- Python 技巧
| 归档时间: |
|
| 查看次数: |
167408 次 |
| 最近记录: |