python调用自己写的类_Python“类”之继承

u=3827812674,3296297990&fm=173&app=25&f=JPEG?w=640&h=478&s=4A7221D715604EAE1964EDD3030040B3

大家好,今天我们一起聊聊Python“类”之继承,说到这个题目,其实我不是特别喜欢,也纠结了几个小时,“所有官方的教程里面都是继承,可我认为在某些程度上遗传更贴切”,文章的封面也选了好久,最终决定了这张亲子图。正式讲之前,和大家聊聊这些,我想对于内容的理解应该会有所帮助。

首先,我们定义一个animal动物的类(就把自己当Python界的造物主吧,现在你正在创建animal):

u=792690289,3408066021&fm=173&app=25&f=JPEG?w=640&h=157&s=3205B148EAA2F77C08FEE5870200D0CB

接下来想创造dog,dog也会eat和sleep,于是身为造物主的我们偷懒了,“eat和sleep,animal就有,能不能从它那儿继承过来”,当然可以啊,大家请看:

u=1077580616,3840124388&fm=173&app=25&f=JPEG?w=640&h=141&s=1A05B14CFAA2F77C567EE483020080CA

我们猜猜看,会输出什么结果,为什么dog类连初始化函数也没有,这样子可以吗?大家先看运行结果

u=3966895139,2201222129&fm=173&app=25&f=JPEG?w=637&h=104

dog继承了animal遗传给它的eat和sleep方法,并调用了animal的初始化方法,好吧,这么大的恩情,所以理所应当的,dog就是儿子,即子类,animal就是爹,即父类。

创造完dog,于是造物主的我们手又痒痒了,现在着手创建cat吧:

u=198745813,69247848&fm=173&app=25&f=JPEG?w=640&h=202&s=3285B1404FA4B7704CFEE4030200D0CB

这回,又会有什么输出结果呢?

u=1976685894,3886412034&fm=173&app=25&f=JPEG?w=640&h=102

发现什么没,cat调用的是自己的初始化方法和eat方法,这就像拒绝继承皇位的王子,想靠自己的意志活出不一样的人生。这在Python里,叫做方法重载,也就是子类根据自己的需要,重写父类中的方法。

u=1904325021,1210052437&fm=173&app=25&f=JPEG?w=640&h=100

然后呢,再创造一个会飞的哺乳动物,蝙蝠bat:

u=355889388,1890184642&fm=173&app=25&f=JPEG?w=640&h=153&s=3A85B14CFAA2F77C185EE5870200D0CB

bat类继承自animal类和bird类,在Python里,这叫做多重继承,就像小孩继承了父母双方的基因,既聪明又漂亮;bat类还生成自己独特的方法focus,下面我们一起看一下运行结果。

u=2701514706,2763302805&fm=173&app=25&f=JPEG?w=640&h=118&s=1295A16CEFA49F701CCEE586020010C8

1、继承语法 class 子类名(父类名1,父类名2,...):

2、子类可以创建自己独有的方法

3、方法调用时,子类先在本类中查找调用的方法,找不到才去父类中按次序找,即在父类1中找到了就不去父类2中找了,这一点可以从bat类的初始化方法中看出。

4、子类可以重写继承自父类中的方法,即方法重载,方法调用时,优先调用子类中重载过的方法,比如上述代码中的eat方法。

今天的Python大餐就先到这儿,大家回去好好消化,等着你的会是更美味可口,敬请享用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值