zoukankan      html  css  js  c++  java
  • Python中类的__init__继承

    Python中类的__init__继承


     概念:

     定义父类

    In [10]: class Person:
       ....:     def __init__(self,name,age,sex):
       ....:         self.name = name
       ....:         self.age = age
       ....:         self.sex = sex
       ....:     def get_name(self):
       ....:         print('name:',self.name)
       ....:  
    In [11]: Bob = Person('Bob',18,'男')
    
    In [12]: Bob.get_name()
    name: Bob

    【1】子类不重写__init__,实例化子类时,会自动调用父类定义的__init__

    In [13]: class Person_child(Person):
       ....:     def get_name(self):
       ....:         print('name:',self.name)
       ....:         
    
    In [14]: child = Person_child('baby',2,'')
    
    In [15]: child.get_name()
    name: baby

    【2】另一种的验证方式

    class Person:
        def __init__(self,name,age):
            self.name = 'Bob'
            self.age = 18
    
        def get_name(self):
            print('name:',self.name)
    
    class Student(Person):
        def get_name(self):
            print('name:',self.name)    
    
    Kevin = Student('Kevin',12)
    print('-------------------------')
    print(Kevin.name)    
    print(Kevin.age)    
    print('-------------------------')
    
    output
    -------------------------
    Bob
    18
    -------------------------

    【3】但重写了__init__时,实例化子类,就不会调用父类已经定义的__init__

    In [17]: class Person_child(Person):
       ....:     def __init__(self,name,age,sex):
       ....:         self.name = name
       ....:         self.age = age
       ....:         self.sex = sex
       ....:     def get_name(self):
       ....:         print('child_name:',self.name)
       ....:         
    
    In [18]: K = Person_child('Kevin',16,'')
    
    In [19]: K.get_name()
    child_name: Kevin

    【4】为了能使用或扩展父类的行为,最好显示调用父类的__init__方法

    class Person:
        def __init__(self,name,age):
            self.name = 'Bob'
            self.age = 18
    
        def get_name(self):
            print('name:',self.name)
    
    class Student(Person):
        def __init__(self,name,age,sex):
            super(Student,self).__init__(name,age)
            self.sex = sex
    
        def get_detail(self):
            print('详细信息:',self.name,'---',self.age,'---',self.sex)
    
            
    
    Kevin = Student('Kevin',12,'')
    print('-------------------------')
    print(Kevin.name)    
    print(Kevin.age)    
    print(Kevin.sex)
    print(Kevin.get_detail())    
    print('-------------------------')
    
    # output
    -------------------------
    Bob
    18
    男
    详细信息: Bob --- 18 --- 男
    None
    -------------------------

    更新....

  • 相关阅读:
    第三次作业
    第二次作业
    第一次作业
    仪仗队(欧拉函数)
    自己随便做的,没做完就没耐心继续了。呵呵
    从别处见到一位大神的代码 飞扬的小鸟(flappy bird)
    简易迷宫游戏c++
    STL做法 平衡树
    基于百度地图api + AngularJS 的入门地图
    javascript 简易文本编辑器
  • 原文地址:https://www.cnblogs.com/Echo-O/p/9398715.html
Copyright © 2011-2022 走看看