父类构造函数python 父类构造函数可以被继承吗( 三 )


May = Baby("May","female")
May.print_title()# 优先使用上层类的方法
Python 如何调用父类的构造函数"""
共有以下二种方法
"""
##class Foo(object):
##def __init__(self):
##self.val =100
##print(self.val)
##class Foo2(Foo):
##def __init__(self):
##Foo.__init__(self)#类调用实例方法时,需要传入self指代的实例
##print(self.val)
##
##if __name__ == '__main__':
##foo2 = Foo2()
class Foo(object):
def __init__(self):
self.val =100
class Foo2(Foo):
def __init__(self):
super().__init__()
print(self.val)
if __name__ == '__main__':
foo2 = Foo2()
python中单继承和多继承中子类默认继承父类的哪个构造函数默认是__init__
【1】python中如果子类有自己的构造函数,不会自动调用父类的构造函数,如果需要用到父类的构造函数,则需要在子类的构造函数中显式的调用 。
【2】如果子类没有自己的构造函数,则会直接从父类继承构造函数,这在单继承(一个子类只从一个父类派生)中没有任何理解上的问题 。
问题:如果是多继承的情况,一个子类从多个父类派生,而子类又没有自己的构造函数,则子类默认会继承哪个父类的构造函数 。
【3】子类从多个父类派生,而子类又没有自己的构造函数时 , 
(1)按顺序继承,哪个父类在最前面且它又有自己的构造函数,就继承它的构造函数;
(2)如果最前面第一个父类没有构造函数,则继承第2个的构造函数,第2个没有的话,再往后找,以此类推 。
pythonclass.function的父类是什么在对于python中类的使用上,我们分出了子类和父类两种 。对于这二者之间的关系,我们可以简单理解为继承 。不过python中加入了实例的讨论,那么对于继承后的子类来说 , 父类的实例是否被继承又是我们所需要思考的问题 。下面我们就子类和父类进行简单介绍,然后就二者之间的继承关系重点分析 。
1.概念
子类和父类主要描述的是类之间的继承关系 , 即所属关系 。继承的类可在被继承的类的基础上添加格外的参数和行为 , 新类称为子类,扩展类;被继承的类称为基类、父类或者超类 。
2.继承关系
子类与父类的关系是 “is” 的关系,如上 Cat 继承于 Animal 类,我们可以说:
“A”是 Animal 类的实例,但,“A”不是 Cat 类的实例 。
“C”是 Animal 类的实例 , “C”也是 Cat 类的实例 。
判断对象之间的关系,我们可以通过 isinstance (变量,类型) 来进行判断:
print('"A" IS Animal?', isinstance(A, Animal))
print('"A" IS Cat?', isinstance(A, Cat))
print('"C" IS Animal?', isinstance(C, Animal))
print('"C" IS Cat?', isinstance(C, Cat))
Python实现子类调用父类的方法
python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法 。如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问,但是该方法或属性在子类中并不存在,那么就会自动的去其父类中进行查找 。
继承父类后,就能调用父类方法和访问父类属性 , 而要完成整个集成过程,子类是需要调用的构造函数的 。
子类不显式调用父类的构造方法,而父类构造函数初始化了一些属性,就会出现问题
如果子类和父类都有构造函数,子类其实是重写了父类的构造函数 , 如果不显式调用父类构造函数 , 父类的构造函数就不会被执行,导致子类实例访问父类初始化方法中初始的变量就会出现问题 。

推荐阅读