찾다

 >  Q&A  >  본문

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일 전515

모든 응답(2)나는 대답할 것이다

  • 黄舟

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

    Python 클래스의 함수는 다음과 같이 작성됩니다. a.setName('Ball A')이고 name='Ball A'입니다.

    회신하다
    0
  • 大家讲道理

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

    1. self은 인스턴스가 생성될 때마다 Javathis과 마찬가지로 인스턴스 자체를 나타냅니다.
      Python의 구문은 클래스 메서드를 정의할 때는 명시적으로정의self해야 하지만, 호출하면 Python이 자동으로 암시적으로 self 매개변수를 전달하는 데 도움이 됩니다.

    2. Python의 실제 인스턴스화 방법은 __new__입니다. __init__는 매개변수 초기화를 완료한 다음 인스턴스화를 위해 __new__에 전달하므로 b = Ball('Potato') 호출 매개변수 전달 형식은 __init__과 일치해야 합니다.

    회신하다
    0
  • 취소회신하다