Python之面向对象
面向对象编程(OOP):
- 面向过程:根据业务逻辑从上到下写垒代码
- 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
- 面向对象:对函数进行分类和封装,让开发“更快更好更强...”
面向对象编程就是对类和对象的应用。类就是一个模板,模板里可以包含多个函数,函数里实现一些功能。对象则是根据模板创建的实例,实例可以执行模板里定义好的函数。
eg:
class hello: def say(self): print 'hello' def people(self,name): print 'i am %s' % name obj = hello() obj.say() obj.people('ahaii')
面向对象编程的三大特性:
一、封装
将内容封装在某个地方,以便以后调用。
1、内容封装
class hello: def __init__(self,name,age): self.name = name self.age = age obj1 = hello('ahaii','22')#自动执行hello类中的__init__方法 obj2 = hello('tom','20')#自动执行hello类中的__init__方法
'__init__(self)'成为构造方法,在创建对象时自动执行。即当执行'obj1 = hello('ahaii','22')'时,就会调用执行__init__()方法。
self为形式参数,当执行obj1 = hello('ahaii','22')时,self=obj1,执行obj2 = hello('tom','20')时,self=obj2。
obj1和obj2两句实际上就是将‘ahaii,22’和‘tom,20’分别封装在了obj1和obj2中。
2、内容调用
两种调用方式:
1)通过实例直接调用
eg:
class hello: def __init__(self,name,age): self.name = name self.age = age obj1 = hello('ahaii','22') print obj1.name,obj1.age#调用obj1实例的name和age属性 obj2 = hello('tom','20') print obj2.name,obj2.age
2)通过self间接调用
eg:
class hello: def __init__(self,name,age): self.name = name self.age = age def people(self): print self.name print self.age people1 = hello('ahaii','22') people1.people() people2 = hello('tom','20') people2.people()
Python默认会将people1传给self参数,即:people1.people(people1)。所以,此时方法内部的 self = people1,即:self.name 是 ahaii ;self.age 是 22
封装就是使用构造函数将内容封装在对象中,然后通过对象或者self来取被封装的内容。
二、继承
子继承父的功能
具体执行:
class 父类: def 父类的方法(self): pass class 子类(父类): pass obj = 子类 obj.父类的方法()
三、多态
pass