11-类相关函数和常用魔法函数

# 1 类相关函数

- issubclass:检测一个类是否是另一个类的子类
- isinstance:检测一个对象是否是一个类的实例
- hasattr:检测一个对象是否由成员xxx
- getattr: get attribute
- setattr: set attribute
- delattr: delete attribute
- dir: 获取对象的成员列表

# 2. 类的成员描述符(属性)

- 类的成员描述符是为了在类中对类的成员属性进行相关操作而创建的一种方式
  - get: 获取属性的操作
  - set:修改或者添加属性操作
  - delete: 删除属性的操作

- 如果想使用类的成员描述符,大概有三种方法
  - 使用类实现描述器
  - 使用属性修饰符
  - 使用property函数
    - property(fget, fset, fdel, doc)

- 无论哪种修饰符都是为了对成员属性进行相应的控制
  - 类的方式: 适合多个类中的多个属性共用用一个描述符
  - property:使用当前类中使用,可以控制一个类中多个属性
  - 属性修饰符: 使用于当前类中使用,控制一个类中的一个属性


# 3. 类的内置属性

__dict__:以字典的方式显示类的成员组成
__doc__: 获取类的文档信息
__name__:获取类的名称,如果在模块中使用,获取模块的名称
__bases__: 获取某个类的所有父类,以元组的方式显示

# 4. 类的常用魔术方法

- 魔术方法就是不需要人为调用的方法,基本是在特定的时刻自动触发
- 魔术方法的统一的特征,方法名被前后各两个下滑线包裹
- 操作类
  - `__init__`: 构造函数
  - `__new__`: 对象实例化方法,此函数较特殊,一般不需要使用
  - `__call__`: 对象当函数使用的时候触发
  - `__str__`: 当对象被当做字符串使用的时候调用
  - `__repr__`: 返回字符串,跟`__str__`具体区别请百度
- 描述符相关
  - `__set__`
  - `__get__`
  - `__delete__`
- 属性操作相关
  - `__getattr__`: 访问一个不存在的属性时触发
  - `__setattr__`: 对成员属性进行设置的时候触发
  - 参数:
    - self用来获取当前对象
    - 被设置的属性名称,以字符串形式出现
    - 需要对属性名称设置的值
  - 作用:进行属性设置的时候进行验证或者修改
  - 注意: 在该方法中不能对属性直接进行赋值操作,否则死循环

- 运算分类相关魔术方法
  - `__gt__`: 进行大于判断的时候触发的函数
  - 参数:
    - self
  - 第二个参数是第二个对象
  - 返回值可以是任意值,推荐返回布尔值

# 5. 类和对象的三种方法

- 实例方法
  - 需要实例化对象才能使用的方法,使用过程中可能需要截止对象的其他对象的方法完成
- 静态方法
  - 不需要实例化,通过类直接访问
- 类方法
  - 不需要实例化

原文地址:https://www.cnblogs.com/zifeng001/p/10824993.html