面向对象编程

面向对象编程

面向对象编程是一种程序设计思想

面向对象编程和面向过程编码的区别

面向过程编程

面向过程编程:核心是过程二字,过程指的是解决问题的步骤,即先干什么后干什么。面向过程的设计就好比流水线,是一种机械式的思维方式。

优点:复杂的问题流程化,进而简单化

缺点:可扩展性差,不便修改

面向对象编程

面向对象编程:核心是对象二字,对象是属性和方法的结合体。面向对象的设计就好比上帝创造世界,存在的都是对象,不存在的也可以造出来。面向对象更加注重对现实世界的模拟,这与面向过程的机械式思维方式形成鲜明对比。

优点:可扩展性强

缺点:编写的复杂远远高于面向过程,不了解面向对象就设计程序,很容易出现设计过度的问题,很难预测到最终结果

面向对象的程序设计并不是全部,对于一个软件质量来说,面向对象的程序设计只是用来解决扩展性的。

类和对象

类和对象是面向对象最重要的概念

类:具有一系列相同属性和方法的对象的结合体,类就是类型

对象:对象是属性和方法的结合体

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

在python中:先有类再有对象,调用类来产生对象

在python中,定义类是通过class关键字的,class 类名

# 定义类尽量使用驼峰体
class Student():
	pass

获取属性和方式是通过 . 来获取的

  1. 类获取属性和方法
    1. 类.__dict__
  2. 类来调用属性和方法
    1. 通过dict取(复杂,不适用)
    2. 类名.属性/函数

对象

调用类就可以产生对象,调用类的过程,又叫做类的实例化,实例化产生的结果称为类的对象/实例。具体的方式是类名加括号就可以生成对象

class Student():
    pass

stu1 = Student()

获取属性和方式是通过 . 来获取的

  1. 对象获取属性和方法

    1. 对象.__dict__
  2. 对象来调用属性和方法

    1. 对象.属性/方法(对象调用方法,第一个参数不用传值)

给对象赋值

对象可以自己添加属性和方法,但是当对象本身没有属性和方法,对象可以去调用类里面的属性和方法。

我们有两种方式可以给对象添加属性和方法。

方式一:直接用对象点出我们需要的添加的属性或方法(方法要先写好函数),然后进行赋值

class Student:
    school = 'oldboy'
    def study(self):
        print('学习...')

stu1 = Student()
stu1.name = 'xiaowu'
print(stu1.name)

# xiaowu

方式二:通过__init__方法

class Student:
    school = 'oldboy'
    def __init__(self, name):
        self.name = name
    def study(self):
        print('学习...')

stu1 = Student('xiaowu')
print(stu1.name)

# xiaowu

在类中定义__init__方法,方法内写一些参数

当我们在实例化产生对象的时候,括号内传的值会内传到__init__方法中,完成对象的初始化

属性的查找顺序

先从对象自身找--->再到类中找--->报错

绑定方法

定义在函数内部的方法:

如果类来调用,就是一个普通的函数,有几个参数就需要传入几个参数

如果对象来调用,就叫做对象的绑定方法,第一个参数(self)不需要传,会自动传递对象本身

一切皆对象

在python中,一切都是对象,如字典、列表、字符串等等

类就是类型,类实例化会产生对象,对象调用对象的绑定方法(内置方法),可以修改对象自己

posted @ 2019-08-26 21:08  云台三落  阅读(149)  评论(0编辑  收藏  举报