首页 > 技术文章 > Python之面向对象

ahaii 2016-03-11 15:57 原文

面向对象编程(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

推荐阅读