面向对象编程的概念

一:面向对象编程的由来

面向对象编程是一种编程思想

面向过程编程的思想,面向过程的核心是过程二字,过程即解决问题的步骤,先干什么,再干什么,,是一种机械式的思维方式。

从面向过程编程思想上可以发现,一旦项目要求快速迭代,随时扩展,那么面向过程编程就会非常吃力,所以在面对有扩展需求的项目时,就需要面向对象的程序设计思想了。

面向对象,核心是对象二字,那么对象是什么呢?

  对象:技能和特征的结合体

  面向对象更注重于对现实世界的模拟,是一种上帝式的思维方式。

面向对象程序设计

  优点:把复杂问题流程化,继而简单化;解决的程序的扩展性问题,对某一个参数修改,会很快的反应到程序中去。

  缺点:编程复杂度高,很难预测问题的精准处理结果;扩展性极差,牵一发而动全身,更改一个组件,这个流水线都要更改。

面向对象程序设计应用场景:需求经常变化的软件,互联网应用,游戏等。

二:类与对象

类即类别、种类,是面向对象设计最重要的概念,对象是特征与技能的结合体,而类则是一系列对象相似的特征与技能的结合体,那么问题来了,先有的一个个具体存在的对象(比如一个具体存在的人),还是先有的人类这个概念,这个问题需要分两种情况去看。

  在现实世界中:先有对象,再有类

  在程序中:务必保证先定义类,后产生对象

在程序中特征用变量标识,技能用函数标识;因而类中最常见的无非是:变量和函数的定义。

程序中的类

class Student:
    school = 'xxx'
    def learn(self):
        print('is talking')

    def eat(self):
        print('is eating')

    def sleep(self):
        print('is sleeping')

注意:

1:类中可以有任意python代码,这些代码在类定义阶段便会执行,因而会产生新的名称空间,用来存放类的变量名与函数名,可以通过OldboyTecher.__dict__查看。

2:对于经典类来说我们可以通过该字典操作类名称空间的名字(新式类有限制),但python为我们提供专门的.语法;点是访问属性的语法,类中定义的名字,都是类的属性

程序中类的用法

.:专门用来访问属性,本质操作的就是__dict__
Student.school  # 等于经典类的操作Student.__dict__['school']
Student.school = 'xxx'  # 等于经典类的操作Student.__dict__['school']='xxx'
Student.x = 1  # 等于经典类的操作Student.__dict__['x']=1
del Student.x  # 等于经典类的操作Student.__dict__.pop('x')

程序中的对象

#调用类,或称为实例化,得到对象
s1 = Student()
s2 = Student()
s3 = Student()

如此,s1、s2、s3都一样了,而这三者除了相似的属性之外还各种不同的属性,这就用到了__init__。
注意:__init__方法是在对象产生之后才会执行,只用来为对象进行初始化操作,可以有任意代码,但一定不能有返回值

class Student:
    ......
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex
      ......
s1 = Student('小刘', '', 18) 
# 先调用类产生空对象s1,然后调用Student.__init__(s1,'lxx','男',18) 
s2 = Student('小明', '', 30)
s3 = Student('小李', '', 18)

程序中对象的用法

# 执行__init__,s1.name='lxx',很明显也会产生对象的名称空间
s2.__dict__
{'name': '小明', 'age': '', 'sex': 30}

s2.name  # s2.__dict__['name']
s2.name = '小明'  # s2.__dict__['name']='小明'
s2.course = 'python'  # s2.__dict__['course']='python'
del s2.course  # s2.__dict__.pop('course')

 

posted @ 2018-04-10 21:15  Leslie-x  阅读(871)  评论(0编辑  收藏  举报