一、类的三大属性:
1、封装:针对的是属性,把属性封装到对象中,保护属性的安全。可通过__name或者_name的方式,getter和setter的方法来间接访问和修改实例的属性,可通过@property装饰器来修饰get_name方法,把该方法的调用改为属性的访问。通过@name.setter装饰器来修饰set_name方法,把该方法的调用改为属性的修改。
2、继承:针对的是类本身,通过子类继承父类的功能,实现代码的复用,程序的简化,功能的扩展,符合OCP(开闭原则),扩展开放修改开闭的原则
3、多态:多态针对的是方法,不同类型的对象可以调用同一个方法或者函数,只要此类对象拥有相同的属性。如len()方法,实质是函数的重载,保证了代码的灵活性
--封装保证了数据的安全性,继承保证了程序的扩展性,多态保证了程序的灵活性。
二、类属性VS实例属性
--直接定义在类代码块的变量叫做类属性,类和实例都可访问,但只能是类可以进行修改。只有那些公共的属性才会放到类属性中,使用不多。
--通过__init__方法初始化或者对象属性直接赋值的方法获得的属性叫做实例属性,实例可以访问,类不能够访问。
三、类方法VS实例方法
--类方法:通过@classmethod装饰器装饰的方法称为类方法,方法中的形参为(cls),类和实例都可访问类方法。
--实例方法:直接定义在类中且方法的第一个形参为(self)的方法称为实例方法,类和实例都可以访问实例方法,当类去调用时,必须传入一个实例对象 A.XX(a)。
四、静态方法
--在类中通过@staticmethod修饰的方法叫做静态方法,静态方法可以不用指定默认参数,静态方法更像是一个放在类中的函数,多数是工具函数,类和实例对象都可以调用静态方法。A.XX() | a.XX()
五、类中的特殊方法
-- 类似__xx__()形式的方法称之为特殊方法,或者魔术方法(magic),特殊方法是程序自动调用的,特殊情况下可以手动调用。
-- __new__() new对象方法,在创建对象时自动调用,用于创建一个新的对象
-- __init__()初始化方法,用于实例创建时的属性初始化
-- __del__()删除方法,当一个对象不被引用时将被垃圾回收,通过del方法,对象删除之前调用,用于把对象从内存中删除,释放内存
-- __str__() 方法,当对象本身将被转化为字符串时调用,作用是返回一个字符串,用来指代该对象。常用的是print()函数
--__repr__()方法,当对象在交互模式下直接显示的结果
-- __gt__()大于比较方法,__gt__(self, other),当用于大于比较时会自动调用,比较2个对象的某个属性的大小,返回True或者False
--类似的方法有 ge(大于等于) lt(小于) le(小于等于) eq(等于) ne(不等于)
-- __len__() 方法,获取对象的长度
-- __bool__()方法,返回对象的一个bool值
-- __add__()方法,用于对象的加法运算,是多态的一个体现
--类似的方法有sub\mul等等。