zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python面向对象学习

Python学习 面向对象
2023-09-14 09:01:25 时间

1.1基础

1.对象:对象是数据和功能(函数)的集合体
2. 类:类是具有共同属性(数据、函数)的对象的总称
:先定义类后实例化对象
3. 属性访问:可以通过__dict__访问属性的值
4. 属性查找和方法绑定:对象的名称空间里只存放着对象独有的属性,而对象们相似的属性是存放于类中的。对象在访问属性时,会优先从对象本身的__dict__中查找,未找到,则去类的__dict__中查找

1.2封装

1.隐藏属性(__)
2.开放接口
3.property

1.3继承和派生

1.通过类的内置属性__bases__可以查看类继承的所有父类

2.属性查找

3.广度优先

4.Pyton Mixins机制

5.子类可以派生出自己新的属性,在进行属性查找时,子类中的属性名会优先于父类被查找

6.组合

1.4多态和鸭子类型

1.多态指的是一类事物有多种形态

2.多态性的本质在于不同的类中定义有相同的方法名,这样我们就可以不考虑类而统一用一种方式去使用对象,可以通过在父类引入抽象类的概念来硬性限制子类必须有某些方法名

import abc

# 指定metaclass属性将类设置为抽象类,抽象类本身只是用来约束子类的,不能被实例化
class Animal(metaclass=abc.ABCMeta):
    @abc.abstractmethod # 该装饰器限制子类必须定义有一个名为talk的方法
    def talk(self): # 抽象方法中无需实现具体的功能
        pass

class Cat(Animal): # 但凡继承Animal的子类都必须遵循Animal规定的标准
    def talk(self):
        pass

cat=Cat() # 若子类中没有一个名为talk的方法则会抛出异常TypeError,无法实例化

3.只需要制造出外观和行为相同对象,同样可以实现不考虑对象类型而使用对象,这正是Python崇尚的“鸭子类型”(duck typing