Python从入门到精pao通lu——OOP面向对象编程

核心特性

  • 封装
  • 继承
  • 多态:一个父类接口,不同子类的多种实现
    封装连接, 例如django链接redis,生成一个redis对象,整个周期都使用这个对象

实例化过程

类 + () == 对象

类的组成

  • 属性:公有属性 + 私有属性
  • 方法:保存在类的内存中
  • 公有变量/类变量/静态字段:
  • 特殊方法

私有属性

self.__private:只能对象自己访问/提供对外访问接口/对象._类名__私有变量
@property的骚操作:可以用来获取处理值

@property
def usd_percent_change_7d(self) -> float:
    num = self.data['quotes']['USD']['percent_change_7d']
    if num is None:
        return 0
    return float(num)

公有变量/类变量

和方法同一级,没有self修饰,共同存在于内存中 == 类定义时也会一起被定义,不会等到实例化,且实例化之后,如果实例通过obj.class_attr方式修改类变量,则实例将会自己生成一个实例自有的属性,实例是不会修改到类变量的

改动类变量只能通过类名来调用, 因为对象赋值一个属性是会重新创建的,对象相当于一个作用域

class X:
    hi = []
    
a = X()
b = X()
a.foo = 1 # a创建了一个属性
print(a.foo) 
print(b.foo) # b是没有foo这个属性的

特殊方法

  • __del__:引用被清空,自动执行,程序运行完毕,执行此函数,python中del关键字时删除的是变量名,而不是删除内存中的变量指向的地址存储的数据

新式类 & 经典类

新式类

  • 定义类
  • 继承父类方法
  • 多继承继承顺序:左,右,上 == 广度优先

经典类

  • 定义类
  • 继承父类方法
  • 多继承继承顺序(Python3.+中跟新式类一致):左,上,右 == 深度优先

你可能感兴趣的:(Python)