1. 定义类和使用类
(1) 类与实例的关系如同模具和通过模具造出来的具体的实物。
(2) 类:属性与方法;
(3) 类实例化步骤:
- 调用__new__()方法创建实例,__new__()方法自动从object继承;
- 调用__init__()方法对其初始化,__init__()方法在类中定义;
(4) 类的说明:以三引号包围的字符串;查看类说明:方式一:help(类名);方式二:类名.__doc__;
(5) 新式类和经典类:
Python 2.x版本:默认是经典类,继承object为新式类;
Python 3.x 版本:统一为新式类,不用继承object;
(6) 新式类和经典类的区别:经典类继承为深度优先;新式类继承为广度优先;
2. 描述对象的特征:属性
(1) dir (类) :可以显示类的所有属性和方法。;
(2) 实例属性:类被实例化之后才具有的属性,一般在__init__()方法中创建并初始化;直接使用即定义:self.<属性名> ;self 用来代表类的实例的。在类外用(实例名.属性名)方式定义和引用属性、方法;一般不建议在__init__()方法之外中创建和初始化实例属性!一般不建议在类外定义和修改,修改可以单独定义方法! 相同类的不同实例其实例属性是不相关的。
(3) 类属性:类定义后就存在,而且不需要实例化;类属性使得相同类的不同实例共同持有相同变量;
(4) 私有属性:使用__开头的变量名加以标志,只有类对象自己能访问;
(5) 特殊属性:__doc__; __name__保存类名;__dict__保存实例属性的所有属性名和值;__module__保存类所在的模块名;__base__保存类的父类;
3. 练习题目
题目:定义一个类Box,其具有实例属性length,width, height,具有私有属性体积(由长宽高计算得来),并且它的每个实例可以知道它被实例化的数量,然后实例它们5次,并输出每个实例的所有属性。
回答:
# -*- coding: utf-8 -*-
"""
Created on Thu Apr 9 20:02:25 2020
@author: coolgirl
"""
class BoxCount():
"""使用超类作为专门计数的类,计数的属性为类属性"""
count=0
class Box(BoxCount):
"""子类初始化时使超类的属性增加1即可"""
def __init__(self,length,width,height):
self.length=length
self.width=width
self.height=height
self.__volume=length*width*height
BoxCount.count+=1
a=Box(1,2,3)
print(BoxCount.count)
b=Box(2,2,2)
print(BoxCount.count)