一,类的继承

1.1继承

概述

1 ,在现实生活中,继承一般指的是子女继承父辈的财产
2. 程序中的继承:在程序中,继承描述的是多个类之间的所属关系。
如果一个类A里面的属性和方法可以复用,则可以通过继承的方式,传递到类B里。
那么类A就是基类,也叫做父类;类B就是派生类,也叫做子类。

程序中示例

# 父类
class A(object):
    def __init__(self):
        self.num = 10

    def print_num(self):
        print(self.num + 10)
# 子类
class B(A):
    pass

b = B()
print(b.num) 
b.print_num()

1.2单继承

概述

单继承:子类只继承一个父类
虽然子类没有定义__init__方法初始化属性,也没有定义实例方法,但是父类有。所以只要创建子类的对象,就默认执行了那个继承过来的__init__方法

总结:

子类在继承的时候,在定义类时,小括号()中为父类的名字
父类的属性、方法,会被继承给子类

示例

class Master(object):
    def __init__(self):
        #属性
        self.kongfu="古法坚果"
    
    #实例方法
    def make_cake(self):
        print(self.kongfu)
        

class Prentice(Master):
    pass

laoli=Master()
print(laoli.kongfu)
laoli.make_cake()
damao=Prentice()
print(damao.kongfu)
damao.make_cake()

1.3 多继承

概述

多继承可以继承多个父类,也继承了所有父类的属性和方法

注意:

如果多个父类中有同名的 属性和方法,则默认使用第一个父类的属性和方法(根据类的魔法属性mro的顺序来查找)
多个父类中,不重名的属性和方法,不会有任何影响。
class SchoolA():


    def make_cake(self):
        print('制作schoolA煎饼果子')

    def make_noodles(self):
        print('制作schoolA烤冷面')


# 创建学校类
class SchoolB():


    def make_cake(self):
        print('制作schoolB的煎饼果子')


class Prentice(SchoolB, SchoolA):
    pass


daqiu = Prentice()
daqiu.make_cake()
daqiu.make_noodles()

1.4 多层继承

概述

多个子类一层一层继承属性到到最后拥有所有父类的公开属性

示例

class SchoolA(object):


    def make_cake(self):
        print('运用制作SchoolA煎饼果子')


class SchoolB(object):


    def make_cake(self):
        print(f'运用制作SchoolB煎饼果子')


class Prentice(SchoolB, SchoolA):


    def make_cake(self):

        print('运用Prentice制作煎饼果子')
    pass



# 徒孙类
class Tusun(Prentice):
    pass


xiaoqiu = Tusun()

xiaoqiu.make_cake()

1.5 调用父类方法super()

二,类属性和实例属性

2.1 私有封装定义

1,封装的意义:

  • 将属性和方法放到一起做为一个整体,然后通过实例化对象来处理;
  • 隐藏内部实现细节,只需要和对象及其属性和方法交互就可以了;
  • 对类的属性和方法增加 访问权限控制。

2,私有权限:在属性名和方法名 前面 加上两个下划线 __

  • 类的私有属性 和 私有方法,都不能通过对象直接访问,但是可以在本类内部访问;
  • 类的私有属性 和 私有方法,都不会被子类继承,子类也无法访问;
  • 私有属性 和 私有方法 往往用来处理类的内部事情,不通过对象处理,起到安全作用。

2.2 私有属性和私有方法

概述

私有是直接在方法之外进行定义的
私有方法时通过双下划线 __修饰的
class lei:

    #私有属性
    age=15
    # 私有方法
    def __siyou(self):
        return lei.age
    def ggai(self):
        return lei.__siyou(lei)

ll=lei()
print(lei.haed(12,12))
print(ll.ggai())

python的子类 python子类继承类属性_父类