python 类的继承(自己的一点理解)

类的继承.py中代码如下:

# 类的继承
# 1.继承时构造函数__init__()
#   1.1继承中无__init__(),调用基类的__init__()
#   1.2继承中有__init__(),调用派生类的__init__(),不调用基类的__init__()
#   1.3继承中有__init__(),但需要调用基类的__init__(),必须显示调用基类的__init__()
#       1.3.1   经典类的写法: 父类名称.__init__(self,参数1,参数2,...)
#       1.3.2.  新式类的写法:super(子类,self).__init__(参数1,参数2,....)
# 总结如下:
# 情况一:子类需要自动调用父类的方法:子类不重写__init__()方法,实例化子类后,会自动调用父类的__init__()的方法。
# 情况二:子类不需要自动调用父类的方法:子类重写__init__()方法,实例化子类后,将不会自动调用父类的__init__()的方法。
# 情况三:子类重写__init__()方法又需要调用父类的方法:使用super关键词:


class MyPerson(object):
    def __init__(self, name, age, nation):
        self.name = name
        self.age = age
        self.nation = nation

    def getname(self):
        return self.name

    def getage(self):
        return self.age

    def getnation(self):
        return self.nation

    def dowork(self):
        print("Name:%s, Age:%s, Nation:%s, i am working" % (self.name, self.age, self.nation))


class Student(MyPerson):
    def __init__(self, name, age, nation, grade):
        MyPerson.__init__(self, name, age, nation)
        self.grade = grade

    def dowork(self):
        print("Name:%s, Age:%s, Nation:%s, Grade:%s , i am studying" % (self.name, self.age, self.nation, self.grade))


class Teacher(MyPerson):
    def __init__(self, name, age, nation, salary):
        super(Teacher, self).__init__(name, age, nation)
        self.salary = salary

    def dowork(self):
        print("Name:%s, Age:%s, Nation:%s, Salary:%s , i am Teching" % (self.name, self.age, self.nation, self.salary))

 

另一个.py中调用:

from 类的继承 import *
p1 = MyPerson("aaa",12,"Chinese")
print(p1.getname(), p1.getage(), p1.getnation())
p1.dowork()

print("*" * 30)

p2 = Student("bbb", 23, "Chinese", 1)
print(p2.getname(), p2.getage(), p2.getnation())
p2.dowork()

print("*" * 30)

p3 = Teacher("ccc", 7, "Chinese", 2000000)
print(p3.getname(), p3.getage(), p3.getnation())
p3.dowork()

输出的结果:

aaa 12 Chinese
Name:aaa, Age:12, Nation:Chinese, i am working
******************************
bbb 23 Chinese
Name:bbb, Age:23, Nation:Chinese, Grade:1 , i am studying
******************************
ccc 7 Chinese
Name:ccc, Age:7, Nation:Chinese, Salary:2000000 , i am Teching

 

以上可以好好理解一下类的继承的相关概念,__init__()的调用,方法的重写等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值