创建
类
class 类名(): #实例属性 def __init__(self,形参): self.属性名 = 形参
#实例方法 def 方法名(): 方法
#静态方法 @staticmethod def 方法名(): 方法
#类型方法 @classmethod def 方法名(): 方法
对象
对象名=类名()
绑定属性和方法
对象.属性(方法)名=属性(函数名)
权限控制
单下划线开头
以单下划线开头的属性或方法表示 protected 受保护的成员,这类成员视为仅供内部使用,允许类方法本身或子类进行访问,单实际它可以被外部代码进行访问
双下划线开头
表示 private 私有的成员,这类成员只允许定义该属性或方法的类本身进行访问
首尾双下划线
一般表示特殊的方法
属性设置
将属性转方法使用
@property def 方法名(self): return self.私有属性
将这个方法设置为可读
@方法名.setter def 方法名(self,形参): self.私有属性=形参
继承/重写
一个子类可以继承 N 多个父类 一个父类也可以拥有 N 多个子类 如果一个类没有继承任何类,那么这个类默认继承的是 object 类
语法结构:
class 类名(父类1,父类2,....,父类N) def __init__(self,形参): supper().__init__(self,形参) #调用父类(一个)的初始方法 父类名称.__init__(self,形参) #调用父类(多个)的初始方法 self.属性名 = 形参、 ##重写方法 def 方法名称(self): super().方法名() #调用父类方法 方法
多态
多态允许不同类的对象对同一个消息做出响应,但具体的响应方式取决于对象的类型
object 类
所有类直接或间接的父类 所有类都用拥有 object 类的属性和方法
ibject 类中的特殊的方法
_new_()
:由系统调用,用于创建对象
_init_()
:创建对象时手动调用,用于初始化对象属性值
_str_()
:对象的描述,返回值是 str 类型,默认输出对象的内存地址
特殊方法
+
:add()
-
:sub()
<
:lt()
<=
:le()
==
:eq()
>
:gt()
>=
:ge()
!=
:ne()
*
:mul()
/
:truediv()
%
:mod()
//
:floordiv()
**
:pow()
特殊属性
obj.___dict__
:对象的属性字典
obj.__class__
:对象所属的类
class.__bases__
:类的父类元组
class.__base__
:类的父类
class.___mro__
:类的层次结构
class.____subclasses__()
:类的子类列表
类的深拷贝与浅拷贝
变量的赋值
只是形成两个变量,实际上还是指向同一个对象
浅拷贝
拷贝是,对象包含的子对象内容不拷贝,因此,源对象与拷贝对象会引用同一个子对象
深拷贝
使用 copy 模块的 deepcopy 函数,队规拷贝对象中包含的子对象, 源对象和拷贝对象所有的子对象也不同