面向对象的三大特征:
1.封装:根据职责将属性和方法,封装到一个抽象的类当中
2.继承:实现代码的重复使用
3.多态:不同的子类调用相同的父类方法实现不一样的结果
多态
案例:
class Work(object):
def __init__(self,name):
self.name=name
def work(self):
print('我是%s我正在工作'%self.name)
class Sjs(Work):
def ht(self):
print('%s正在画图'%self.name)
class Cxy(Work):
def mdm(self):
print('%s正在码代码'%self.name)
work=Work('小明')
work.work()
sjs=Sjs('奥特曼')
sjs.work()
sjs.ht()
cxy=Cxy('阿呆')
cxy.work()
cxy.mdm()
结果:
我是小明我正在工作
我是奥特曼我正在工作
奥特曼正在画图
我是阿呆我正在工作
阿呆正在码代码
在Work类中封装了work方法,创建了Sjs和Cxy两个子类,并在两个子类中创建了不同的方法ht和mdm,super.work()是重写方法,相当于在子类中对于父类方法的拓展,但多态是创建了子类实例对象创建后直接调用父类的方法。继承以重写方法为前提。
术语:
使用类名创建对象的时候,先会在内存中为对象分配内存空间,调用初始化方法时为对象初始化,对象创建后内存就有了一个对象实实在在存在的实例。
创建出来的对象叫做类的实例
创建对象的动作叫做实例化
对象的属性叫做实例属性
对象调用的方法叫做实例方法,调用实例方法时可以通过self访问自己的属性和方法。
类属性和类方法
类是一个特殊的对象,类对象有自己的属性和方法,通过类名去访问或者调用类属性或类方法。
class Tool(object):
#创建类属性,用来记录创建对象的次数
count=0
def __init__(self,name):
self.name=name
#对类属性做一个加1 的操作
Tool.count+=1
#创建工具类
tool1=Tool('锤子')
tool2=Tool('锯')
tool3=Tool('梯子')
print('现在创建了%s个对象'%Tool.count)
结果:
现在创建了3个对象