“老奶奶”的python学习笔记

“老奶奶”的python学习笔记(12)

2019-12-01  本文已影响0人  菁_在路上

知识体系

第12关:面向对象编程

知识点

面向对象编程(Object Oriented Programming) 是一种以对象为中心的编程思想,它在软件设计、数据库设计、网络结构设计、人工智能算法等领域有着非常广泛的应用。

概念:类与对象

类:class

不同的数据类型就属于不同的类

可以用“type()”函数来辨别

        比如: print(type('1')) # '1'属于字符串类'str'

                    print(type(1)) # 1属于整数类'int'

                    print(type([1])) # [1]属于列表类'list'

实例 (instance)

在Python的术语里,我们把类的个例就叫做实例 (instance),可理解为“实际的例子”。 我理解:比如1和2就是整数类的实例

类是某个特定的群体,实例是群体中某个具体的个体。它们之间的关系类似于:群体和个体。群体里的每个个体都有着相同/相似的特征和行为。

对象

Python中的对象等于类和实例的集合

类对象

实例对象

基础用法:类的创建与调用

用代码制造对象:类和实例的创建

类与类之间的区别

1、事物是什么?有什么特征 对应编程里的:属性(即what)

2、事物能做什么?有哪些行为和作用 对应编程里的:方法(即how)

Python里的每个类都有自己独特的属性(attribute)和方法(method),是这个类的所有实例都共享的。换言之,每个实例都可以调用类中所有的属性和方法。

与现实世界的属性和方法是在对客观实在抽象总结得来的不同,编程中的属性和方法是我们自己创建的

如何自定义一个类:类的创建

实例方法的创建语句,和函数的定义语句很类似,唯一不同的是:实例方法中有个必须放在首位的参数self(定义时不能丢,调用时要忽略)

除此之外,类名的首字母要大写

类的调用

类的调用,就是将类实例化,即在某一个类下创建一个实例对象。

比如:

class Computer:

    screen = True

    def start(self):

    print('电脑正在开机中……')

my_computer = Computer()#这一句就是类的实例化,是类的调用

print(my_computer.screen)#属性的调用,调用的语法是“实例名.属性”

my_computer.start()#方法的调用,调用的语法是“实例名.方法”

创建和调用三步骤

创建一个类 —— 类的实例化 —— 用实例调用类的属性和方法

类的两个关键点

特殊参数:self

作用: self会接收实例化过程中传入的数据,当实例对象创建后,实例便会代替 self,在代码中运行。

self的作用相当于先给实例占了个位置,等到实例创建好就“功成身退,退位让贤”。

我们需要记住两点:

第一点:只要在类中用def创建方法时,就必须把第一个参数位置留给 self,并在调用方法时忽略它(不用给self传参)

第二点:当在类的方法内部想调用类属性或其他方法时,就要采用self.属性名或self.方法名的格式

举例:

class Chinese:

    def greeting(self):

        print('很高兴遇见你')

    def say(self):

        self.greeting()

        print('我来自中国')

person = Chinese() # 创建实例person

person.say() # 调用say()方法

初始化方法(也叫构造函数)

定义初始化方法的格式

def __init__(self)

是由init加左右两边的【双】下划线组成( initialize “初始化”的缩写)

初始化方法的作用

当每个实例对象创建时,该方法内的代码无须调用就会自动运行。

比如:

class Chinese:

    def __init__(self):

        print('很高兴遇见你,我是初始化方法')

person = Chinese() #》》其结果是:“很高兴遇见你,我是初始化方法”。

在只是创建了实例,还没有调用时,初始化方法就自动执行了!

除了设置固定常量,初始化方法同样可以接收其他参数,让传入的这些数据能作为属性在类的方法之间流转

class Chinese:

    def __init__(self, name, birth, region):

        self.name = name # self.name = '吴枫'

        self.birth = birth # self.birth = '广东'

        self.region = region # self.region = '深圳'

    def born(self):

        print(self.name + '出生在' + self.birth)

    def live(self):

        print(self.name + '居住在' + self.region) person = Chinese('吴枫','广东','深圳') # 传入初始化方法的参数

person.born()

person.live()

思维进阶:面向对象编程

与面向对象编程相对应的是面向过程编程,这是这关以前的关卡里我们所采用的编程思维。

面向过程编程:

首先分析出解决问题所需要的步骤(即“第一步做什么,第二步做什么,第三步做什么”),然后用函数实现各个步骤,再依次调用。

而面向对象编程,会将程序看作是一组对象的集合。用这种思维设计代码时,考虑的不是程序具体的执行过程(即先做什么后做什么),而是考虑先创建某个类,在类中设定好属性和方法,即是什么和能做什么。接着,再以类为模版创建一个实例对象,用这个实例去调用类中定义好的属性和方法即可。

面向对象编程,将代码具体的数据和处理方法都封装在类中,让我们不用完全了解过程也可以调用类中的各种方法。

这个优势让我们可以在 Python 中轻松地调用各种标准库、第三方库和自定义模块(可以简单理解成别人写好的类),这是Python 之所以这么强大和热门的主要原因之一。

上一篇下一篇

猜你喜欢

热点阅读