面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | whileTrue:    ifcpu利用率 > 90%:        #发送邮件提醒        连接邮箱服务器        发送邮件        关闭连接    if硬盘使用空间 > 90%:        #发送邮件提醒        连接邮箱服务器        发送邮件        关闭连接    if内存占用 > 80%:        #发送邮件提醒        连接邮箱服务器        发送邮件        关闭连接 | 
随着时间的推移,开始使用了函数式编程,增强代码的重用性和可读性,就变成了这样:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | def发送邮件(内容)    #发送邮件提醒    连接邮箱服务器    发送邮件    关闭连接whileTrue:    ifcpu利用率 > 90%:        发送邮件(‘CPU报警‘)    if硬盘使用空间 > 90%:        发送邮件(‘硬盘报警‘)    if内存占用 > 80%:        发送邮件(‘内存报警‘)  | 
今天我们来学习一种新的编程方式:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)
注:Java和C#来说只支持面向对象编程,而python比较灵活即支持面向对象编程也支持函数式编程
面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。
类就是一个模板,模板里可以包含多个函数,函数里实现一些功能
对象则是根据模板创建的实例,通过实例对象可以执行类中的函数

类是一系列对象共有的特征(变量的定义)与技能(函数的定义)的结合体
class Foo:
    def Bar(self):
        print(123)
    def Hello(self,name):
        print(name)
f = Foo()
f.Hello(‘123‘)
面向对象的三大特性是指:封装、继承和多态。
一、封装
封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。
所以,在使用面向对象的封装特性时,需要:
#!/usr/bin/Python
# -*- coding:utf-8 -*-
class Foo:
    def __init__(self,name,age):#Foo类的构造方法
        self.name=name
        self.name=name
    def cc(self):
        print(self.name)
        return self
obj1=Foo(‘han‘,20)#创建Foo类对象
练习一:在终端输出如下信息 小明,10岁,男,上山去砍柴 小明,10岁,男,开车去东北 小明,10岁,男,最爱大保健 老李,90岁,男,上山去砍柴 老李,90岁,男,开车去东北 老李,90岁,男,最爱大保健
class Foo:
    
    def __init__(self, name, age ,gender):
        self.name = name
        self.age = age
        self.gender = gender
    def kanchai(self):
        print "%s,%s岁,%s,上山去砍柴" %(self.name, self.age, self.gender)
    def qudongbei(self):
        print "%s,%s岁,%s,开车去东北" %(self.name, self.age, self.gender)
    def dabaojian(self):
        print "%s,%s岁,%s,最爱大保健" %(self.name, self.age, self.gender)
xiaoming = Foo(‘小明‘, 10, ‘男‘)
xiaoming.kanchai()
xiaoming.qudongbei()
xiaoming.dabaojian()
laoli = Foo(‘老李‘, 90, ‘男‘)
laoli.kanchai()
laoli.qudongbei()
laoli.dabaojian()
面向对象
对象的使用:只有一种,就是属性引用
#实例化
class Chinese:
    country = ‘China‘
    # Chinese.__init__(p1,‘egon‘,‘18‘,‘male‘)
    def __init__(self, name, age, sex):
        # p1.Name=name;p1.Age=age,p1.Sex=sex
        self.Name = name
        self.Age = age
        self.Sex = sex
    def talk(self):
        print(‘%s is talking‘ %self.Name)
# p1=Chinese(‘egon‘,‘18‘,‘male‘) #Chinese.__init__(p1,‘egon‘,‘18‘,‘male‘)
# p2=Chinese(‘alex‘,‘9000‘,‘female‘) #Chinese.__init__(p1,‘egon‘,‘18‘,‘male‘)
#对象的使用:只有一种,就是属性引用
# print(p1.Name)
# print(p1.Age)
# print(p1.Sex)
# print(p2.Name)
# print(p1.country)
# print(p2.country)
 
原文:http://www.cnblogs.com/hanjialong/p/6959402.html