概念
- 类(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)#继承客车的属性
self.name = name
def method(self):
print("公交车的驾驶方法")
super(子类.self).__init__(weight)
注:方法名同,默认调用的是在括号中参数位置排前父类的方法(及若father1与father2中都含有name,由于father1调用在前,所以child.name=father1.name)
类的专有方法
- __init__ : 构造函数,在生成对象时调用
- __del__ : 析构函数,释放对象时使用
- __repr__ : 打印,转换
- __setitem__ : 按照索引赋值
- __getitem__: 按照索引获取值
- __len__: 获得长度
- __cmp__: 比较运算
- __call__: 函数调用
- __add__: 加运算
- __sub__: 减运算
- __mul__: 乘运算
- __truediv__: 除运算
- __mod__: 求余运算
- __pow__: 乘方
子类可以将父类重写
%super(子类,实例化对象).myMethod() #用子类对象调用父类已被覆盖的方法
python多态(实例方法)
假设每一个类都含有同一种方法
def Method(objcet):
objcet.method()#调用这一类方法,只需要传递参数
多态的理解:https://blog.csdn.net/weixin_44695969/article/details/92175840
菜鸟教程:Python3 面向对象 | 菜鸟教程