pyhon类继承

Posted 我是一个快乐的小op

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyhon类继承相关的知识,希望对你有一定的参考价值。

1,python类的继承

class A(object):
    name =‘eason‘
    age = ‘22‘
    def __init__(self):
        print ‘我是A的构造函数!!!‘
    def getname(self):
        return self.name
    def getage(self):
        return self.age

class B(object):
    name = ‘linsir‘
    age=‘30‘
    def __init__(self):
        print ‘我是B的构造函数!!!‘
    def getname(self):
        return self.name
    def getage(self):
        return self.age

class C(A,B):
    def __init__(self):
        print  ‘我是我自己的构造函数‘
        #调用父类的构造函数
        super(C,self).__init__()
    name = ‘testsir‘
    age = ‘25‘

person1 = C()
print person1.getname()
print person1.getage()

运行结果:
我是我自己的构造函数
我是A的构造函数!!!
testsir
25

 

子类如果没有构造函数,默认会使用父类的构造函数,如果继承多个父类,看哪个父类写在前面就调用哪个父类的构造。

C继承了A和B ,所以A和B为C的父类或者说是基类。

A和B为C的子类,或者说是AB的派生类。

调用父类的第一个方法:可以用super函数。super(son,self).__init__()
 
调用父类的第二个方法:父类.方法名(self),不建议使用,因为如果有多个调用父类的方法的代码,如果类的名称一旦发生变化,则意味这后面调用父类的方法的代码都得变。
 
2,python方法重写
class father(object):
    def __init__(self):
        self.name = ‘tom‘
        print ‘father‘

    def func(self):
        print ‘father.func‘

    def bad(self):
        print ‘father抽烟喝酒 ‘

class son(father):
    def __init__(self):
        super(son,self).__init__()
        print ‘son‘

    def sonc(self):
        print ‘son.sonc‘

    #重写bad函数,不在使用父类的函数。如果想调用父类的函数,可以用super执行父类的方法。
    def bad(self):
        #调用
#       super(son, self).bad()
#         father.bad(self)
        print ‘son赌博‘
son1 = son()
son1.sonc()
son1.bad()


运行结果:
father
son
son.sonc
son赌博

  

son1 = son()实例化一个对象出来,调用bad方法,由于子类已经有bad方法,故无需重父类调用,即达到父类方法的重写功能。

 
 



 

以上是关于pyhon类继承的主要内容,如果未能解决你的问题,请参考以下文章

java 代码片段

Python进阶之一

如何覆盖继承的嵌套类中存在的虚拟方法

pyhon学习第六天 代码块,小数据池(缓存机制,驻留机制),is == id =,字符编码

php如何实现多继承?

python的MRO和C3算法