一。类和对象
1. class 关键字定义一个类,首字符通常要大写,类里面主要有两种数据:
属性
方法
2. 通过定义的类,创建的实例就是对象,对象的属性和方法和类的成员变量及成员函数想对应
3. 对象有3个特性:
对象的句柄,属性,方法
4.python的实例化和函数的调用相似,使用类名加圆括号的方式。
二。类的属性
1. 私有属性:属性的名字是以两个下划线开始
A。类的外部不能直接访问私有属性
B。通过以下模式调用:instance._classname_attribute
instance:实例化的对象
classsname:类名
attribute:私有属性
2. 公有属性:没有下划线的属性
3. 实例属性:以self作为前缀的属性
4. 静态属性:又叫类变量/类属性,
A。没有self,可以在该类的所有实例中共享,
B。类和对象都可以直接访问类属性
5. 内置属性:属性名字两侧均有双下划线:如,__dict__,__doc__,__bases__
类的属性和方法定义次序没有要求,合理的方式是把类的属性定义在类最前面,然后定义私有方法,最后定义公有方法
三. 类的方法:
self参数:是区分方法和函数的标志,表示指向实例对象本身,
类是一个产生实例的工厂,在定义类的时候,会产生类的命名空间及物理内存,
在类实例化,生成实例时,同样会产生该实例的命名空间及物理内存,当有多个
实例同时存在时,通过self参数的传入,把self.data存入到个各个不同的实例
命名空间里。
1. 公有方法:
2. 私有方法 :方法名前有双下划线,
不能被模块外的类和方法调用,也不能被外部的类和函数调用
3. 静态方法:
@staticmethod声明
staticmethod()可以把一个方法转换为静态方法。
4. 类方法:
@classmethod声明
classmethond()
把类作为第一个参数(cls)传递
5. 实例方法:
6. 类的内置方法:方法名字两侧均有双下划线,如:__init__,__del__,__str__
四。一些内置方法:
__init__方法:
1. 构造函数
2. 用于初始化类的内部状态,为类的属性设置默认值
2.1 定义实例变量或属性
2.2 程序初始化
如果需要了解一个实例的属性和特点,可以查看类里的__init__方法。
3. 调用:可以随时调用
fruit.__init__(color)
__del__方法:
1. 析构函数
2. 用于释放对象占用的资源
3. 程序里可选,如果程序里没有析构函数,python会提供默认的析构函数,如果定义了
则实例无法被python的循环垃圾收集器(gc)收集,建议只在需要时定义此函数
五。类的继承:
1. 概念及调用:
类名后使用一对括号表示继承,括号里的类即为父类
如果父类定义了__init__方法,子类必须显示的调用父类的__init__方法。
调用父类 __init__方法的模式:
A。Fruit.__init__(self,color)
B。super(type,obj):
type:某个类,
obj:该类的实例化对象
super(Apple,self).__init__
2. 抽象基类:
对一类事物的特征行为的抽象,由抽象方法组成,在python3中可以使用abc模块,这个模块中有个元类ABCMeta和
修饰器@abstractmethod。抽象基类不能被直接实例化
3. 多态性:
继承机制说明子类具有父类的公有属性和方法,而且子类可以扩展自身的功能,添加新的属性和方法。因此,子类可以
替代父类对象,这种特性称之为多态性。
4.多重继承;
1个类可以继承多个父类:class_name(parent_class1,parent_class2...)
5.Mixin机制:
六。 在模块里导入类:
from modulename import firstclass
class secondclass(firstclass)
def 。。。。