1 概述
简称:OOP(Oriented Object Programming)。这是一种以构建对象,编程实现为方向的语言。现实世界中,许多问题过于复杂,需要拆分,所以用不同的对象代替各个不同的部分。对象,是物理世界到逻辑世界(计算机世界)的一种映射关系。在编程实现的过程中,需要逻辑清晰,否者无法模拟现实世界中的实际运作过程。OOP中,有个理念----“万物皆对象”,彰显这门设计哲学的实力。
类,可以提高将现实关系变成虚拟的逻辑关系的效率,这是由对象的共同特性产生。对象,是不同的事物,如男人和苹果。但是男人和苹果,都有体积、重量等共同特性,所以由这些特性可以合成一个类(也说,抽象成一个类),专门由于管理不同对象的体积和重量。类,也可以说成类型,比如水果类,有橘子和黎两种对象,也有其他的。
与面向过程程序设计的理念不同,参考其他资料。
OOP做出的程序项目优点很多:
易维护
效率高
质量高
易扩展
项目的不同部分是不同对象,负责不同功能,分工明确。其中有些代码可以重复利用,通过继承、接口等使用。项目开发过程中,也可以持续添加想的功能(类和对象)。
2 类和对象的详述
类是不同对象之间的共性的抽象,即很多相同事物的综合。一个类,是一个类型。
概况说来,类是对象的抽象,对象是类的具体表现形式(很多种),也说对象是类的实例(实际例子)。
建立一个类----男人,有胖男人、瘦男人、好男人、坏男人等不同对象,class man。然后,在建立一个对象(实例化)。
#class是类的关键字,man是类的名称
class man:
print "man"
#建立对象(类的实例),直接在类名后加小括号
Li_Ming = man()
#打印对象Li_Ming的内存地址
print Li_Ming
#建立多个对象,好坏、胖瘦等等...
bad_man = man()
good_man = man()
high_man = man()
slim_man = man()
#打印上面4个对象的内存地址
print bad_man
print good_man
print high_man
print slim_man
在上述程序中,将man()这个类给了不同的对象,对象名不一样,对象所占的存储内存也是不一样的。print的结果就不截图了。
3 属性与方法的详述
方法是对象(类的实例化)所拥有的一些功能。例如,对象bad_man(坏男人)的方法是打女人,对象good_man(好男人)的方法是保护女人。
属性,经常和方法混淆来讲,但是区别很大:
属性是静态的概念,方法是动态的概念
属性代表对象的数据,方法代表对象的操作
属性的创建,代码如下:
#构建类
class man:
print "man"
#实例化(对象)
bad_man = man()
#查看bad_man中有哪些属性
print bad_man.__dict__
#给一个实例添加属性,将bad_man的头发hair设置为yellow
bad_man.hair = "yellow"
#查看bad_man中是否出现属性
print bad_man.__dict__
#bad_man中的属性不会影响其他实例的属性,可用print打印查看
good_man = man()
print good_man.__dict__
#查看对象bad_man所属类的属性
print bad_man.__class__.__dict__
#给bad_man所属的类添加属性。绝大多数的男人,都是有JJ的
bad_man.__class__.body = "have JJ"
#再次查看对象bad_man所属类的属性
print bad_man.__class__.__dict__
#查看对象good_man所属类的属性,验证bad_man所属类属性添加后带来的影响
print good_man.__class__.__dict__
总结:单个实例(对象)的属性之间相互独立,不互相影响。类的属性由该类下面的所有实例(对象)共享。
操作截图:
方法的创建,代码如下:
#构建类,并添加方法eat
class man:
def eat(self): #self是Python规定的第一个参数,不许修改。所有的实例共享这个方法,
#self,如同C++中的this,不具备其他任何含义
print "都需要吃饭"
print “man”
#实例化
good_man = man()
#good_man调用eat()方法
good_man.eat()
#其他调用方法
man().eat()
隐藏属性和隐藏方法,代码如下:
#隐藏方法,不能在类的外部调用,在方法前加下划线
class man:
def __eat(self):
print "All man eat!"
#检验,会报错
man().__eat()
其他常用的方法:
构造函数,__init__(self),在实例化的时候就被调用,初始化。init代表建立
析构函数,__del__(self),对象在执行到最后的时候,需要释放这个对象。del代表释放
4 继承
这里,准备单独去写一篇blog......