15.面向对象

1. 类的定义

python中的类通过 class 关键字来定义,类的成员有属性方法

# 示例
class ClassName: 
    <statement-1>
    .
    .
    .
    <statement-N> 

1.1 属性

类的属性可以显式地定义在类中, 同变量一样,属性的定义必须初始化

class A:
    a = 14
    b = 12
    
print(A().a)
# 14

属性还可以隐式地通过构造方法来定义

1.2 构造方法 _init(self)

Python的构造方法是名为 __init__ 的方法,第一个参数为 self, 指向当前对象。

1.3 类的方法

类的方法不同于函数,有一个默认参数 self

2. 继承

子类可以继承父类的属性和方法,支持多继承。

方法的搜索规则:

需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。

2.1 重写方法

  • 在子类中定义与父类相同的方法,就会在子类中重写该方法。

  • 在子类中调用父类方法,需要显示指定父类的名字(可能有多个父类)

强制调用父类的方法:

3. 访问控制

3.1 私有成员

  • 类的私有属性 : __private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs

  • 类的私有方法 : __private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。self.__private_methods

4. 专有方法

类的专有方法:

  • __init__ : 构造函数,在生成对象时调用

  • __del__ : 析构函数,释放对象时使用

  • __repr__ : 打印,转换

  • __setitem__ : 按照索引赋值

  • __getitem__: 按照索引获取值

  • __len__ : 获得长度

  • __cmp__ : 比较运算

  • __call__ : 函数调用

  • __add__ : 加运算

  • __sub__ : 减运算

  • __mul__ : 乘运算

  • __truediv__ : 除运算

  • __mod__ : 求余运算

  • __pow__ : 乘方

最后更新于

这有帮助吗?