【1.111】继承调用

#继承调用父类方法创建对象,以及调用其方法

class che:
    def __init__(self,name):
        self.name = name
    def run(self,speed,power):
        print ("开动啦")
        print ("%s开走了,速度为%s,动力由%s提供"
               %(self.name,speed,power))
class public_trasportation(che):
    pass

line1=public_trasportation("成都公交")
line1.run("13km/s","天然气")

1、以上只是使用父类的 方法 和 创建对象

2、重写方法与父类同名

 

(调用顺序就是找自己的类然后父类,

多继承就使用广度优先或者深度优先

 

(新式类为广度优先

经典类为深度优先

 

(python3 全是新式类,python2只有继承object的为新式类)

python2继承非object类的为经典类

#继承调用

class che:
    def __init__(self,name):
        self.name = name

    def run(self,speed,power):
        print ("开动啦")
        print ("%s开走了,速度为%s,动力由%s提供"
               %(self.name,speed,power))

class public_trasportation(che):
    def __init__(self,name,line):
        che.__init__(self,name)  #记得要传入参数self
        self.line=line

    def run(self,speed,power,loader):
        print("下面输出来自che(父类)".center(50, "-"))
        che.run(self,speed,power)
        print()
        print("下面输出来自public_trasportation".center(50, "-"))
        print("%s%s路开走了,速度为%s,动力由%s提供,载重%s人"
              %(self.name,self.line,speed,power,loader))



line1=public_trasportation("成都公交","520")
line1.run("1314km/s","92#汽油","52")

# ------------------下面输出来自che(父类)-------------------
# 开动啦
# 成都公交开走了,速度为1314km/s,动力由92#汽油提供
# 
# ------------下面输出来自public_trasportation------------
# 成都公交520路开走了,速度为1314km/s,动力由92#汽油提供,载重52人

3、看看super().如何用

super( ).  和super(__class__,self).

注意点

注意 对象(__class__)  就是输出结果的是类名

#继承调用  super()

class che:
    def __init__(self,name):
        self.name = name

    def run(self,speed,power):
        print ("开动啦")
        print ("%s开走了,速度为%s,动力由%s提供"
               %(self.name,speed,power))

class public_trasportation(che):
    def __init__(self,name,line):
        super().__init__(name)       #这里就不用传入self
        #che.__init__(self,name)  #记得要传入参数self
        self.line=line

    def run(self,speed,power,loader):
        print("下面输出来自che(父类)".center(50, "-"))
        super().run(speed,power)
        #che.run(self,speed,power)
        print()
        print("下面输出来自public_trasportation".center(50, "-"))
        print("%s%s路开走了,速度为%s,动力由%s提供,载重%s人"
              %(self.name,self.line,speed,power,loader))



line1=public_trasportation("成都公交","520")
line1.run("1314km/s","92#汽油","52")

# ------------------下面输出来自che(父类)-------------------
# 开动啦
# 成都公交开走了,速度为1314km/s,动力由92#汽油提供
#
# ------------下面输出来自public_trasportation------------
# 成都公交520路开走了,速度为1314km/s,动力由92#汽油提供,载重52人

 

4、看看super(子类名,self)

#继承调用  super(子类名,self)

class Che:
    def __init__(self,name):
        self.name = name

    def run(self,speed,power):
        print ("开动啦")
        print ("%s开走了,速度为%s,动力由%s提供"
               %(self.name,speed,power))

class public_trasportation(Che):
    def __init__(self,name,line):
        super(public_trasportation,self).__init__(name)

        #super().__init__(name)       #这里就不用传入self
        #Che.__init__(self,name)  #记得要传入参数self
        self.line=line

    def run(self,speed,power,loader):
        print("下面输出来自che(父类)".center(50, "-"))
        super(public_trasportation,self).run(speed,power)

        #super().run(speed,power)
        #Che.run(self,speed,power)
        print()
        print("下面输出来自public_trasportation".center(50, "-"))
        print("%s%s路开走了,速度为%s,动力由%s提供,载重%s人"
              %(self.name,self.line,speed,power,loader))



line1=public_trasportation("成都公交","520")
print(line1.__class__)                       # <class '__main__.public_trasportation'>
line1.run("1314km/s","92#汽油","52")

# ------------------下面输出来自che(父类)-------------------
# 开动啦
# 成都公交开走了,速度为1314km/s,动力由92#汽油提供
#
# ------------下面输出来自public_trasportation------------
# 成都公交520路开走了,速度为1314km/s,动力由92#汽油提供,载重52人

 

posted @ 2016-05-17 10:59  科学小怪癖  阅读(120)  评论(0)    收藏  举报