面向对象:
类:基础标准
对象:根据标准产生的具体的实例
关系:对象是类的实例化结果,一个类会产生多个对象
使用面向对象:
先有类----通过类创建对象----对象调用类里规定的属性、方法
python里的魔术方法:由类提供,两个下划线开始,两个下划线结束
__init__方法:在创建一个对象时默认被调用
__init__方法里的self参数,在创建对象时不需要传递参数
在类的内部,可以使用self来使用属性和调用方法;在类的外部,需要使用对象名来使用属性和调用方法
__del__方法:
创建对象后,python解释器默认调用__init__()方法;
当删除对象时,python解释器会默认调用__del__方法
__str__方法和__repr__方法
两个方法都用于显示输出结果,__str__是面向用户的,显示结果更加友好,__repr__是面向程序员的
调用repr()函数时内部会调用对应的__repr__函数,调用str()函数时内部会调用对应的__str__函数
%r格式化对应的是调用repr()函数,%s格式化对应的是调用repr()函数
当调用print函数时,对应调用的是__str__函数;当直接在终端输出对象时,调用的是__repr__函数
比较运算符相关的魔法方法:
__eq__:等于(=) __ne__:不等于(!=)
__lt__:小于(<) __gt__:大于(>)
__le__:小于等于(<=) __ge__:大于等于(>=)
算术运算符相关的魔法方法:
__add__:+ __sub__:-
__mul__:* __truediv__:/
__mod__:% __pow__:**
类型转换相关的魔法方法:
__int__:整数 __float__:浮点数
__str__:浮点数 __bool__:布尔型
内置属性
使用内置函数dir可以查看一个对象支持的所有属性和方法
__slots__:Python中支持动态属性,可以直接通过点语法直接给一个对象添加属性,代码更加的灵活。
但是在某些情况下,我们可能需要对属性进行控制,此时,就剋使用__slots__实现
__doc__:表示类的描述信息
__module__: 表示当前操作的对象在那个模块
__class__: 表示当前操作的对象的类是什么
__dict__:以字典的形式,显示对象所有的属性和方法
__getitem_、\_setitem__和__delitem__方法:是将对象当做字典一样进行操作
实例属性
通过类创建的对象被称为实例对象,对象属性又称为实例属性,
记录对象各自的数据,不同对象的同名实例属性,记录的数据各自独立,互不干扰。
类属性
类属性就是类对象所拥有的属性,它被该类的所有实例对象所共有,类属性可以通过类对象或者实例对象访问
类属性和实例属性不能同名,如果有同名实例属性,实例对象会优先访问实例属性。
类属性只能通过类对象修改,不能通过实例对象修改
类属性也可以设置为私有