|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
class Animal(object):
def eat(self, food):
print(f'正在吃{food}')
def play(self):
print('正在玩')
def sleep(self):
self.eat('狗粮1号')
print('正在睡觉')
调用类的时候
Animal.play(()) 我发现这样调用也是可以的 有谁知道为什么吗?
另外 Animal.play(Animal()) 这个调用后的执行顺序也不是很理解,有明白的大神知道不?
- 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()
复制代码
|
|