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
前后对比,详解区别及代码矫正。
Fungsi kelas Python ditulis seperti ini, ia adalah a.setName('Ball A') dan ia adalah name='Ball A'.
self
adalah dinamik Setiap kali tika dibuat, ia mewakili tika itu sendiri, sama sepertiJava
dalamthis
.Sintaks dalam
Python
adalah seperti ini Apabila kaedah kelas ditakrifkan, ia perlu secara eksplisitditakrifkanself
, tetapi apabila dipanggil, Python secara automatik secara tersirat membantu anda memasukkan parameter .self
ialah
Python
,__new__
hanya melengkapkan pemulaan parameter dan kemudian menyerahkannya kepada__init__
untuk instantiasi, jadi b = Ball('Potato') Panggilan format lulus parameter mesti konsisten dengan__new__
.__init__