zoukankan      html  css  js  c++  java
  • python中子类继承父类成员变量之间的取值逻辑---自创

    python中子类继承父类成员变量之间的取值逻辑

    代码:

    # 定义父类person
    class person():
    def __init__(self,name,age,sex):
    self.name="zhangxiao"
    self.age='18'
    self.sex=sex
    def talk(self):
    print("i want to speak something to yo!!")
    # 定义子类chinese
    class chinese(person):
    def __init__(self,name,age,sex,language):
    # 先继承父类的构造方法的两种方式 :
    # super(chinese, self).__init__(name,age,sex)#2. 新式类的写法:super(子类,self).__init__(参数1,参数2,....)
    person.__init__(self,name,age,sex)#1.经典类的写法: 父类名称.__init__(self,参数1,参数2,...)
    self.age=age # 定义时:此self为子类的实例,若有此定义则调用sex属性时取的为子类实例化的参数;若未指定则传入的为父类构造方法中写定的参数
    self.language="chinese"
    def talk(self):
    print("我说的是中国话!!")
    c=chinese("xiaoli",'33','nan',"chinese")
    print(c.name)#对应场景A
    print(c.age)#对应场景B
    print(c.sex)#对应场景C
    print(c.talk())
    总结:
    A:若父类中初始化了成员变量,子类调用父类构造方法未覆盖属性(self.sex),则调用子类属性时取值为父类中初始化的成员变量;
    B:若父类中初始化了成员变量,若子类调用父类构造方法覆盖属性(self.sex)则取值为子类实例中传入参数
    C:若父类未初始化该成员变量则,无论子类中有无进行对父类构造方法进行属性的覆盖,均取子类实例中传入的参数
    D:对于方法则子类重写父类方法,调用时直接覆盖父类的方法
  • 相关阅读:
    浅谈Android中Activity的生命周期
    探索ASP.NET MVC框架之控制器的查找与激活机制
    探索ASP.NET MVC框架之路由系统
    浅谈JavaScript中的defer,async
    浅谈MVC中路由
    JavaScript中一些怪异用法的理解
    split
    您正在搜索的页面可能已经删除、更名或暂时不可用。
    C#中的Attributes的用法
    Timeout expired 超时时间已到. 达到了最大池大小 错误及Max Pool Size设置
  • 原文地址:https://www.cnblogs.com/lnn123/p/10540944.html
Copyright © 2011-2022 走看看