recherche

Maison  >  Questions et réponses  >  le corps du texte

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

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

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

怪我咯怪我咯2778 Il y a quelques jours514

répondre à tous(2)je répondrai

  • 黄舟

    黄舟2017-04-18 10:22:39

    La fonction de la classe Python est écrite comme ceci, c'est a.setName('Ball A') et c'est name='Ball A'.

    répondre
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:22:39

    1. self est dynamique. Chaque fois qu'une instance est créée, elle représente l'instance elle-même, tout comme le Java dans this.
      La syntaxe dans Python est comme ceci. Lorsque la méthode de classe est définie, elle doit être explicitementdéfinieself, mais lorsqu'elle est appelée, Python <🎜 automatiquement. >implicitement vous aide à passer les paramètres . self

    2. La vraie méthode d'instanciation dans

      est Python, __new__ termine simplement l'initialisation des paramètres puis la remet à __init__ pour l'instanciation, donc b = Ball('potato') L'appel Le format de transmission des paramètres doit être cohérent avec __new__. __init__

    3. répondre
      0
  • Annulerrépondre