• Python继承


    继承

    和Java不同,Python中可以多继承,就是一个子类可以继承多个父类,一个父类也可以有多个子类。

    子类可以调用父类的公有方法,属性。

    例如,下面这个是父类:

     1 # -------------------------继承-------------------------------------------
     2 class People():
     3     def __init__(self,name,gender,age):
     4         self.name = name
     5         self.gender = gender        #如果要设置为私有属性可以这样:self.__gender = gender
     6         self.age = age
     7 
     8     def attri(self):
     9         food = input('输入你要吃的东西:')
    10         sleep_time = input('你要睡多久?')
    11         play_item = input('你要play?')
    12         self.Eat(food)
    13         self.Sleep(sleep_time)
    14         self.Play(play_item)
    15     def Eat(self,food):
    16         self.food = food
    17         # food = input('输入你要吃的东西:')
    18         return food
    19     def Sleep(self,sleep_time):
    20         self.sleep_time = sleep_time
    21         # sleep_time = input('你要睡多久?')
    22         return sleep_time
    23     def Play(self,play_item):
    24         self.play_item = play_item
    25         # play_item = input('你要play?')
    26         return play_item
    27     def submit(self):
    28         # food = self.Eat()
    29         # sleep = self.Sleep()
    30         # play_item = self.Play()
    31         print(self.name, '', self.food)
    32         print(self.name, '要睡', self.sleep_time)
    33         print(self.name, 'play',self.play_item)

    这个也是父类:

    1 class Son():
    2     def __init__(self,father):
    3         self.father = father
    4         print('父亲是:', self.father)

    这个是子类,它继承了前面两个父类:

     1 class Student(People,Son):      #子类继承父类,多继承,父类可以有多个子类,子类也可以多个父类,Java不能多继承,一个子类只能一个父类
     2     def __init__(self,name,gender,age,id,father):
     3         super(Student, self).__init__(name,gender,age)      #重写构造方法又继承父类构造方法
     4         # People.__init__(self,self.name,self.gender,self.age)
     5         Son.__init__(self,father)       #继承指定父类构造方法
     6         self.id = id
     7     def study(self):
     8         print(self.name,'在学习')
     9     def Play(self, play_item): #这种子类与父类同名的方法的现象被称为方法重写,也被称为方法覆盖,可以说子类重写了父类的方法,也可以说子类覆盖了父类的方法
    10         print('学生只允许玩扫雷!!!')
    11         self.play_item = play_item
    12             # play_item = input('你要play?')
    13         return play_item

    子类重写了父类的构造方法,重写构造方法一般用第二种经典方法,这种方法可以指定重写的父类,如果继承了多个父类的话。

    子类中命名和父类相同的方法,就是对父类方法的重写,如果子类对象调用,只会调用重写后的方法。

    下面是创建子类对象的方法:

     1 def identify():
     2     idfy = input('输入你的身份:')
     3     if idfy == 'Student':
     4         info = input('输入people信息:')
     5         name = info.split(' ')[0]
     6         gender = info.split(' ')[1]
     7         age = info.split(' ')[2]
     8         id = info.split(' ')[3]
     9         father = info.split(' ')[4]
    10         s1 = Student(name,gender,age,id,father)
    11         s1.attri()
    12         s1.study()
    13         print('_'*30)
    14         print(s1.name, s1.age, s1.gender,s1.id,s1.father)
    15         s1.submit()

    注意如果py文件中除了类、方法、变量的声明外,还有方法或者对象的创建,在其他py文件(也叫模块)调用时,会把文件的所有内容都执行一遍,如果不想执行这些方法或者对象的创建,要在这些语句前加:

    1 if __name__ == '__main__':      #当在其他页面import这个页面时,确保不会执行以下内容
    2  

    表示以下内容只有在运行本页面时才会执行。

  • 相关阅读:
    mysql 数据库引擎
    dubbo 微服务
    spring 属性文件加载接口---PropertySourceLoader
    Shiro架构
    HTTP状态码
    Shiro 修改权限,刷新权限
    Consul 架构(译)
    Java EE平台介绍(译)
    Java SPI机制
    Otb_000_ElementUI 的 Drawer组件无法上下滚动没有滚动条
  • 原文地址:https://www.cnblogs.com/x991788x/p/13531515.html
Copyright © 2020-2023  润新知