欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python世界-迈出第八步-class继承

程序员文章站 2022-05-24 20:50:33
...

Class 继承

'''

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


面向对象三大特性:封装、继承、多态。封装的意义:
    1. 将属性和方法放到一起做为一个整体,然后通过实例化对象来处理;
    2. 隐藏内部实现细节,只需要和对象及其属性和方法交互就可以了;
    3. 对类的属性和方法增加 访问权限控制。

私有权限:在属性名和方法名 前面 加上两个下划线 __
    1. 类的私有属性 和 私有方法,都不能通过对象直接访问,但是可以在本类内部访问;
    2. 类的私有属性 和 私有方法,都不会被子类继承,子类也无法访问;
    3. 私有属性 和 私有方法 往往用来处理类的内部事情,不通过对象处理,起到安全作用。

原文链接:https://blog.csdn.net/python_nice/article/details/81013267


'''


class Student(object):
    '''
    self代表类的实例,而非类。
    self就是用于存储对象属性的集合,就算没有属性self也是必备的
    self 就是 对象/实例 属性的集合,
    https://blog.csdn.net/u012722531/article/details/79814632
    '''
    
    def __init__(self, name, score):
        self.name = name

        self.score = score

    def print_score(self):
        print("%s: %s" % (self.name, self.score))

    def get_grade(self):
        if self.score >= 90:
            return 'A'
        elif self.score >= 60:
            return 'B'
        else:
            return 'C'


student = Student('gavin', 65)
student.print_score()

model = student.get_grade()
print(model)

# 多继承 以及 重写init属性
class Animal(object):
    def __init__(self, age):
        self.age = age

    def eat(self):
        print('动物吃东西')

    def run(self):
        print('动物跑的快')


class CatAnimal(object):
    def __init__(self):
        self.age = 20

    def eat(self):
        print('猫类吃东西')


class Cat(Animal, CatAnimal):
    '''
    # 重写之后,如果发现仍然需要父类方法,则可以强制调用父类方法
        # 1.父类名.父类方法()
        # Animal.__init__(self)
        # 2.super(子类名,self).父类方法()
        # super(Cat, self).__init__()

        # 3. super().父类方法()。只在 python3 可用

    '''

    def __init__(self, age):
        self.name = 'Gavin'
        super(Cat, self).__init__(age)

    def catch(self):
        print('猫能抓老鼠')

    # 重写了父类的方法
    def eat(self):
    	print('{}岁的猫只吃鱼'.format(self.age))


cat = Cat(10)
cat.run()
# MRO 算法,确定了查找父类方法的顺序
cat.eat()
# 强制调用了指定父类的方法,父类名.父类方法.(子类对象)
CatAnimal.eat(cat)
# print(cat.name)
print(cat.age)

相关标签: Python