您的位置:首页技术文章
文章详情页

python - 类 对象 函数后面的参数问题,勉强看懂但是要自己写出来就感觉很困难

【字号: 日期:2022-09-17 09:04:46浏览:42作者:猪猪

问题描述

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=namedef kick(self): print(’我是%s,该死的,谁踢我...’%self.name)

b=Ball(’土豆’)b.kick()c-Ball()    b=Ball(’土豆’)TypeError: object() takes no parameters

前后对比,详解区别及代码矫正。

问题解答

回答1:

Python 类的函数就是这么写得,是 a.setName(’球A’) 是 name=’球A’。

回答2:

self是动态的,每次创建一个实例,它就代表这个实例本身,就像 Java 里的this。在 Python 里的语法就是这样,类方法定义的时候需要显式定义self,但是在调用的时候 Python 自动隐式帮你传入了 self 参数。

在 Python里 真正的实例化方法是__new__,__init__只是完成了参数的初始化,然后交给__new__实例化,所以 b = Ball(’土豆’) 这个调用传参格式要和__init__一致。

标签: Python 编程