概念

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用
  • self:self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类。

类的创建

class ClassName:
   '类的帮助信息'   #比如用于..功能,过ClassName.__doc__查看。
   class_suite  #类体,由类成员,方法,数据属性组成。
#类定义,小汽车
class Car:
    #定义基本属性
    weight = 0 

    #定义私有属性,私有属性在类外部无法直接进行访问
    __private = 0

    #定义构造方法
    def __init__(self,weight,private):
        self.weight = weight
        self.__private=private
    def method(self):
        print("小汽车的驾驶方法")

 
#另一个类(客车),多重继承之前的准备
class Coach:
    #定义基本属性
    weight = 0 

    #定义私有属性,私有属性在类外部无法直接进行访问
    __private = 0

    #定义构造方法
    def __init__(self,weight,private):
        self.weight = weight
        self.__private=private
    def method(self):
        print("客车车的驾驶方法")

对象属性与类属性

对象属性优先于类属性(尽量不要让类属性与对象属性重名)

类属性(类调用)Car.weight

对象属性(实例对象调用)c=Car(200,100)  c.weght

类的继承

class child(father):

def __init__(self, name,weight):
    # father.__init__(self, weight)继承父类的属性
    super().__init__(weight)#继承父类的属性

多继承

class child(father1,father2):

#bus,继承客车的属性
class Bus(Coach):
    name = ""
    def __init__(self, name,weight):
        # Coach.__init__(self, weight)继承客车的属性
        super().__init__(weight)#继承客车的属性
         = name
    def method(self):
        print("公交车的驾驶方法")

super(子类.self).__init__(weight)

注:方法名同,默认调用的是在括号中参数位置排前父类的方法(及若father1与father2中都含有name,由于father1调用在前,所以=father1.name)

类的专有方法

  • __init__ : 构造函数,在生成对象时调用
  • __del__ : 析构函数,释放对象时使用
  • __repr__ : 打印,转换
  • __setitem__ : 按照索引赋值
  • __getitem__: 按照索引获取值
  • __len__: 获得长度
  • __cmp__: 比较运算
  • __call__: 函数调用
  • __add__: 加运算
  • __sub__: 减运算
  • __mul__: 乘运算
  • __truediv__: 除运算
  • __mod__: 求余运算
  • __pow__: 乘方

子类可以将父类重写

%super(子类,实例化对象).myMethod() #用子类对象调用父类已被覆盖的方法

python多态(实例方法)

假设每一个类都含有同一种方法

def Method(objcet):
    objcet.method()#调用这一类方法,只需要传递参数

多态的理解:

菜鸟教程:Python3 面向对象 | 菜鸟教程

blibli:Python面向对象提升与收发邮件_哔哩哔哩_bilibili