【第十三章】python之面向对象编程继承及方法重写

上一篇讲到python面向对象编程的入门,现在可以更深一步:继承与方法重写

继承

面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。 通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类。

继承的基本语法。

class 派生类名(基类名)
    ...

我们继续使用代码演示:

class User:
    '所有用户共有的属性'
    _index = 0
    def __init__(self,name,age):
        self.name = name
        self.age = age
        User._index+=1

    def show(self):
        print("my name is ",self.name,"age is ",self.age," 我的序号是:",User._index) #这里不能直接写name

    def setName(self,name):
        self.name = name
    def setAge(self,age):
        self.age = age

class Teacher(User):
    def __init__(self):
        print("这是教师的方法")

teacher = Teacher();
teacher.setAge(18)
teacher.setName("我是老师!")
teacher.show()

运行结果入如下: 

2d0b452c79d74afde97aa774e7806b304b5.jpg

如果你想多继承,也是可以的,直接class Teacher(xxxx1,xxxx2) 找不到大家有没有理解上面那个例子,这里我简单说一下,首先Teacher类继承了User类的所有方法, 所以创建Teacher类后,就拥有了User类的方法,它可以直接调用setAge和setName方法,设置值,也可以直接调用User类的show方法进行输出信息,这里需要注意的是,创建Teacher类时,调用是Teacher的构造函数哦!

方法重写

直接看代码演示:

class Parent: # 定义父类
    def myMethod(self):
        print("调用父类方法")

class Child(Parent): # 定义子类
    def myMethod(self):
        print("调用子类方法")

c = Child()# 子类实例
c.myMethod()# 子类调用重写方法

运行结果:

aec3369f8e38c0bba1e67443e02af9c8d5e.jpg

这样,调用的就是自己的方法而不是父类的方法了。

属性的访问权限

单下划线、双下划线、头尾双下划线说明:

  • foo: 定义的是特殊方法,一般是系统定义名字 ,类似 init() 之类的。
  • _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
  • __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。

好了,今天学习到这,大家都理解了吗,如果有不懂的地方,欢迎留言互相讨论,我会积极回复哦! 下一篇我将和大家一起学习python操作mysql数据库,做好准备。

转载于:https://my.oschina.net/puguole/blog/2209415

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值