python中继承、定制类

2.4python中继承

继承中不要忘了调用super().__init__

def __init__(self,args)
    super(subclass,self).__init___(args) #初始化父类
    pass

例:

定义一个person类

class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender

定义一个student类,添加额外属性score

class student(person):
    def __init__(self,name,gender,score):
        super(student,self).__init__(name,gender) #初始化父类
        self.score=score

定义一个teacher类,添加额外属性course

class Person(object):
  def __init__(self, name, gender):
    self.name = name
    self.gender = gender
class Teacher(Person):
  def __init__(self, name, gender, course):
    super(Teacher, self).__init__(name, gender)
    self.course = course

t = Teacher('Alice', 'Female', 'English')
print t.name
print t.course

>>>Alice
English


2.5判断类型

函数isinstance()可以判断一个变量的类型,如内置的数据类型:str、list、dict,也可以用我们自定义的类。

例:person、student、teacher的定义和继承关系如下

class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender
class student(person):
    def __init__(self,name,gender,score):
        super(student,self).__init__(name,gender)
        self.score=score
class Teacher(Person):
    def __init__(self, name, gender, course):
        super(Teacher, self).__init__(name, gender)
        self.course = course
p = Person('Tim', 'Male')
s = Student('Bob', 'Male', 88)
t = Teacher('Alice', 'Female', 'English')

>>> isinstance(p, Person)
True    # p是Person类型
>>> isinstance(p, Student)
False   # p不是Student类型
>>> isinstance(p, Teacher)
False   # p不是Teacher类型

>>> isinstance(s, Person)
True    # s是Person类型
>>> isinstance(s, Student)
True    # s是Student类型
>>> isinstance(s, Teacher)
False   # s不是Teacher类型

总结:一个父类的实例不能是子类类型,所以子类比父类多一些属性和方法;一个实例可以看成它本身的类型,也可以看成它父类的类型


2.6多态

例:

class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender
    def whoAmI(self):
        return 'I am a Person, my name is %s' % self.name

class Student(Person):
    def __init__(self, name, gender, score):
        super(Student, self).__init__(name, gender)
        self.score = score
    def whoAmI(self):
        return 'I am a Student, my name is %s' % self.name

class Teacher(Person):
    def __init__(self, name, gender, course):
        super(Teacher, self).__init__(name, gender)
        self.course = course
    def whoAmI(self):
        return 'I am a Teacher, my name
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值