class Ball:
def setName(self,name):
self.name=name
def kick(self):
print('我是%s,该死的,谁踢我...'%self.name)
a=Ball()
a.setName('球A')
b=Ball()
b.setName('球B')
c=Ball()
c.setName('球C')
a.kick()
c.kick()
我是球A,该死的,谁踢我...
我是球C,该死的,谁踢我...
a.setName()函数定义的时候有两个参数self,name。a.setName('球A')后面又只有一个了,那是表示self=‘球A’吗,那第二个函数kick里的语句sefl.name又作如何解释呢?
class Ball:
def _init_(self,name):
self.name=name
def kick(self):
print('我是%s,该死的,谁踢我...'%self.name)
b=Ball('土豆')
b.kick()
c-Ball()
b=Ball('土豆')
TypeError: object() takes no parameters
前后对比,详解区别及代码矫正。
黄舟2017-04-18 10:22:39
The function of the Python class is written like this, it is a.setName('Ball A') and it is name='Ball A'.
大家讲道理2017-04-18 10:22:39
self
是动态的,每次创建一个实例,它就代表这个实例本身,就像 Java
里的this
。
在 Python
里的语法就是这样,类方法定义的时候需要显式定义self
,但是在调用的时候 Python 自动隐式帮你传入了 self
parameters.
in Python
里 真正的实例化方法是__new__
,__init__
只是完成了参数的初始化,然后交给__new__
实例化,所以 b = Ball('土豆') 这个调用传参格式要和__init__
consistent.