class Animal(object):
def __init__(self):
print('__init__%', self)
def eat(self, food):
print(f'正在吃{food}')
def play(self):
print('正在玩%', self, type(self))
def sleep(self):
self.eat('狗粮1号')
print('正在睡觉')
def test():
print('test')
def main():
a = Animal() #Animal() 代表创建一个Animal对象并返回
#Animal.play() #这里报错是因为,Animal类对象直接调用play方法从而缺少self参数
a.play() #但是这里调用就不会报错,因为a是Animal类的对象
#,当它调用play时会把自己当做self参数传
#小结:通过对象调用方法都会把自己当做第一个参数也就是self传
# 通过类调用就不会传参数
Animal.play(()) #这里Animal类对象直接调用play方法不会报错是因为‘()’当成一个空元组传到self
Animal.play(a) #这里不会报错,吧a传到self中
#a.test() #这里会报错,因为self参数没有人接收
Animal.test() #这里不会报错因为类直接调用的时候不会传self参数
return 0
if __name__ == '__main__':
main()
|