派生 de rive

Posted on 2019-04-21 04:48  Max404  阅读(57)  评论(0编辑  收藏  举报
'''
de rive 派生

python2 (经典类|新式类)
python3 (新式类)

1.
What is derive?
什么是派生?

    派生:子类定义自己新的属性,如果与父类同名,以子类自己的为准

在子类派生出的 新方法 中重用父类的功能方法:

    方式1:Dad.__init__(self,name, age, sex)
    方式1:super().__init__(name, age, sex)


'''

# -- ( 在子类定义自己的属性,覆盖父类 ) -------------------------------------------------------------------------------------------
# -- ( 子类派生,就是父类没有的属性 就叫派生 ) -------------------------------------------------------------------------------------------

'''
class Pap:  # 定义爷类
    family = 'Happiness'

    def __init__(self, name, age, sex,money,salary):
        self.name = name
        self.age = age
        self.sex = sex
        self.money = money
        self.salary = salary


class Dad:  # 定义父类
    family = 'Happiness'
    def __init__(self, name, age, sex, money):
        self.name = name
        self.age = age
        self.sex = sex
        self.money = money

class Son(Dad):  # 子类继承(父类)
    def __init__(self, name, age, sex, money,salary):
        self.name = name
        self.age = age
        self.sex = sex
        self.money = money
        self.salary = salary
        print('儿子%s' % self.name)

# 实例化对象(传参)
Father = Dad('father', 50, 'male',400000)
Max = Son('max',24,'male',5000000000,30000)

# 验证结果
print(Father.name,Father.age,Father.sex,Father.money) # Enter --> father 50 male 400000
print(Max.name,Max.sex,Max.salary,Max.money) # Enter --> max male 30000 5000000000
'''


# -- ( 方式1:Dad.__init__(self,name, age, sex)
# -- ( 方式1:super().__init__(name, age, sex)

# -- ( 在子类派生出的 新方法 中重用父类的功能方法 ) -------------------------------------------------------------------------------------------
# -- ( # 方式一:指出要调用的父类,不过与继承没关系 )
# -- ( Dad.__init__(self,name, age, sex) )
'''
class Dad:  # 定义父类
    family = 'Happiness'
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex

class Son(Dad):  # 子类继承(父类)
    def __init__(self, name, age, sex, money,salary):

        # -- ( # 方式一:指出要调用的父类,不过与继承没关系 ) -------------------------------------------------------------------------------------------
        Dad.__init__(self,name, age, sex)
        # -- ( # 在子类派生出的新方法中重用父类的方法 ) -------------------------------------------------------------------------------------------

        self.money = money
        self.salary = salary

        print('儿子%s' % self.name)


# 实例化对象(传参)
Father = Dad('father', 50, 'male')
Max = Son('max',24,'male',30000,5000000000)

# 验证结果
print(Father.name,Father.age,Father.sex)
print(Max.name,Max.sex,Max.salary,Max.money)
# Enter -->
    # 儿子max
    # father 50 male
    # max male 5000000000 30000
'''


# -- ( 在子类派生出的 新方法 中重用父类的功能方法 ) -------------------------------------------------------------------------------------------
# -- ( # 方式二:)
# -- 内置函数 super() 严格依赖于继承关系
# -- super()的返回值是一个特殊的对象,该对象专门用来调父类中的属性

# -- python2 : super(自己的类名,self) 固定用法
# -- python3 : super() 固定用法


class Dad:  # 定义父类
    family = 'Happiness'
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex

class Son(Dad):  # 子类继承(父类)
    def __init__(self, name, age, sex, money,salary):

        super().__init__(name, age, sex)

        self.money = money
        self.salary = salary

        print('儿子%s' % self.name)


# 实例化对象(传参)
Father = Dad('father', 50, 'male')
Max = Son('max',24,'male',30000,5000000000)

# 验证结果
print(Father.name,Father.age,Father.sex)
print(Max.name,Max.sex,Max.salary,Max.money)