我不明白这些是用什么的,尤其是self
论证?有些人可以向我解释这个问题吗?为什么你要传递这个呢?
此外,我一直认为__init__
是'初始化',但我没有想过我以前从来没有在这里放任何东西.有人能给我一个简单的例子吗?
编辑:我每次看到self
被传递到函数或其他类似的东西时都会感到困惑.
Dav*_*ebb 18
self
是你正在调用方法的对象.这有点像this
Java.
__init__
在创建初始化每个对象时调用它们.它就像Java中的构造函数.
因此,__init__
无论何时您想要在创建对象时设置任何属性(Java中的成员变量),您都会使用它.如果您对"空"对象感到满意,则不需要__init__
方法,但如果要创建带参数的对象,则需要一个方法.
一个例子是:
class StackOverflowUser:
def __init__(self, name, userid, rep):
self.name = name
self.userid = userid
self.rep = rep
dave = StackOverflowUser("Dave Webb",3171,500)
Run Code Online (Sandbox Code Playgroud)
然后我们可以看看我们创建的对象:
>>> dave.rep
500
>>> dave.name
'Dave Webb'
Run Code Online (Sandbox Code Playgroud)
所以我们可以看到__init__
传递给构造函数的参数self
,它是对已创建对象的引用.然后self
我们在处理参数时使用并适当地更新对象.
self
当其他语言不需要Python 时,有一个问题就是Python .根据Python FAQ:
为什么必须在方法定义和调用中明确使用"self"?
首先,您更明显的是使用方法或实例属性而不是局部变量...
其次,这意味着如果要显式引用或从特定类调用该方法,则不需要特殊语法...
最后,例如变量,它解决了赋值的语法问题:因为Python中的局部变量(根据定义!)在函数体中赋值的那些变量(并且未明确声明为全局),必须存在某种方式告诉解释器一个赋值是为了分配一个实例变量而不是一个局部变量,它应该最好是语法的(出于效率原因)......
归档时间: |
|
查看次数: |
537 次 |
最近记录: |