python 封装

二、封装

特点:单继承  多继承   多层次  

特点:先实例化 父类  再实例化子类

现实:现有 爷爷  父亲   你

class B:
    def __init__(self):
        print("B的构造")
    pass

class C(B):
    def __init__(self):
        print("A的构造")
    pass

# 实例化子类

c=C( );

1.先实例化父类再实例化子类

2.Super关键字

特派员

  生存:在子类  代表父类对象   A  B:super  C:super

 语法:

构造:

super().__init(self)

方法:

super().方法名()

属性:

suuper().属性

3.题目

给父类加一个属性

父类有参数构造方法,子类必须定义一个有参数构造,给父类传递参数

完整代码:

class B:
    def __init__(self,name):
        print("B的构造")
        self.name=name
    pass
class C(B):
    def __init__(self,name):
        super().__init__(name)
        print("A的构造")
    pass
# 先实例化父类后实例化子类    输出:B构造  A构造
c=C("张三丰" );
print(c.name)
# B的构造
# A的构造
# 张三丰

简易代码: python帮助你赋值

子类可以不写构造方法,创建子类对象,默认调用父类构造方法

注意:

  1. 如果父类有,有参数构造 ,子类可以不写构造
  2. 如果父类有,有参数构造,子类的定义有参数构造必须调用父类有参数构造,进行赋值
  3. 如果父类是无参数构造(不写默认),子类有没有构造方法都可以
  4. 子类有没有构造  和 对父类没有关系
class B:
    def __init__(self,name):
        print("B的构造")
        self.name=name
    pass
class C(B):
    pass
# 先实例化父类后实例化子类    输出:B构造  A构造
c=C("张三丰" );
print(c.name)

题目:

   父类:Teacher

   子类:htmlTeacher  JavaTeacher

   属性:名字   学校

   方法:授课  自我介绍

from day0810.Teacher import  *
class JavaTeacher(Teacher):

    def giveLession(self):
        print("打开eclipse")
        super().giveLession()

class HtmlTeacher(Teacher):

    def giveLession(self):
        print("打开Dreamweaver")
        super().giveLession()


java=JavaTeacher("张三","北京分校")
java.info()
java.giveLession()

html=HtmlTeacher("李四","山西分校")
html.info()
html.giveLession()


class Teacher:
    def __init__(self, name, school):
        self.name = name
        self.school = school

    def giveLession(self):
        print("教学授课")
        print("总结布置作业")

    def info(self):
        print("我是",self.school,"的",self.name)

练习;把HtmlTeacher中添加 编号属性, 输出:我的编号是:1001 我是北京分校的张三

 

多继承

class A:
    def test1(self):
        print("AAAAA")
class B:
    def test1(self):
        print("BBBBB")
class C(B,A):
    pass
c=C()
c.test1()
print(C.__mro__)
# BBBBB
# (<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>)

总结:

  语法:class  子类(父类1,父类2)

  方法名相同:先子类   父类1   父类2

  方法名不同:子类全部继承

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值