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
self
은 인스턴스가 생성될 때마다 Java
의 this
과 마찬가지로 인스턴스 자체를 나타냅니다. Python
의 구문은 클래스 메서드를 정의할 때는 명시적으로정의self
해야 하지만, 호출하면 Python이 자동으로 암시적으로 는 self
매개변수를 전달하는 데 도움이 됩니다.
Python
의 실제 인스턴스화 방법은 __new__
입니다. __init__
는 매개변수 초기화를 완료한 다음 인스턴스화를 위해 __new__
에 전달하므로 b = Ball('Potato') 호출 매개변수 전달 형식은 __init__
과 일치해야 합니다.