python编程理论篇_Python篇----面向对象程序设计(理论篇)

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__

总结:单个实例(对象)的属性之间相互独立,不互相影响。类的属性由该类下面的所有实例(对象)共享。

操作截图:

0818b9ca8b590ca3270a3433284dd417.png

方法的创建,代码如下:

#构建类,并添加方法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......

你可能感兴趣的:(python编程理论篇)