python下类函数的self问题???

日月山人 发布于 2014/10/04 13:48
阅读 1K+
收藏 0

实例:

    class Animals():
    def breathe(se):
        print('breating')
    def move(self):
        print('moving')
    def eat_food(self,x,y):
        self.move
        print('%s week eating %sfood'%(x,y))


class Mammal(Animals):
    def feed_young_with_milk(self):
        print('feeding young')


class Giraffes(Mammal):
    def eat_leaves_from_tress(self):
        print('eating leaves')


g= Giraffes()
g.eat_food(3,4)


第一个问题:  g.eat_food(3,4) 最后的结果是 3 week eating 4food

而不是  moving

           3 week eating 4food.

什么原因呢? pycharm下运行 


第二个问题:  如果修改类函数中的def eat_food(self,x,y): 去除self 为什么错误, 而调用的时候,其实只有两个参数,而不是三个参数, 参数和参数之间的是如何对应的???

加载中
0
日月山人
日月山人
第一个问题发现是漏了 self.move() , 第二个问题请大师补充一下,谢谢
0
痞子蔡
痞子蔡

”桌上有本书“从这句话中你能知道书是谁的吗?不知道吧。改成”桌上是我的书“就能知道书是我的,而不是别人的。eat_food同样的道理,不加self,它的意思是”吃东西“,但是谁吃东西呢?不知道。加上self, 意思就明确了,”自己吃东西“,而不是别人吃东西。

为什么传递参数又不用呢?因为知道了self是Animals,所以自动帮你传递了,省的你麻烦。就好像我们平常说:”拜拜,吃饭去喽。“,这话本来应该是:”拜拜,我吃饭去喽。“。这里少了”我“都不影响这句话的意思,所以”我“也就可以省略了。

0
DavidWTF
DavidWTF
类的实例方法的第一个参数总是实例本身,而且是自动传递的,所以函数实现时必须加self参数,当然不一定叫self,叫别的名字也行,但必须有这个参数。
返回顶部
顶部