前言:
我们编程可分为两种编程思想:
面向过程:将程序进行流程化,即把程序的步骤整理清楚再一步步实现,但是拓展性差,程序的流程在写程序的时候已经决定好,后期更改程序会牵扯到有关联性的一些功能。
理解:面向过程关注的是解决问题需要哪些步骤
面向对象:将程序的变量以及功能整合到一起成为:对象
,程序的流程是在对象生成后决定的,后期拓展程序只需要更改对象(或实例化对象的类)即可
理解:面向对象关注的是解决问题需要哪些对象
但并不是说开发程序一定只用面向对象编程思想来进行开发,选取对我们更有优势的方式才是最好的!那么本篇就来介绍一下面向对象编程~
本篇主要介绍面向对象的基础内容
面向对象编程(OOP)
Python作为设计之初就是作为一种面向对象的编程语言。
什么是对象?目前可以理解为:有名称、属性、功能的集合体
其实在我们平常所使用python时就已经接触到对象
拿定义一个变量来举例:所列出的方法是x这个字符所具备的吗?
并不是,我们可以看成:x = int(10) 这样更利于理解,因为我们输入10,Python会检测到我们输入的内容进而帮我们转换为对应的数据类型。可以理解成:10是由int产生的,之后我们将10赋给一个变量,这个变量此时就可以称之为:对象
那么我们来说一下如何产生对象。
类与对象
上序所说的int就是一个类名,Python中对象是由调用类而实例化出的
类的定义:由class关键字产生
class 类名:
<statement...>
那么我们获取对象则是调用定义的类名
class Person: # 类名的定义推荐采用驼峰体:即单词的首字母大写
age = 10 # 类的属性
def f(self):
print('Hello class')
p = Person() # 那么我们通过调用Person这个类,实例化出一个名为:p的对象
print(p.age) # 访问这个类的属性
p.f() # 访问这个类的方法
我们会注意到:在类里面def创建函数时,会自动产生一个self的参数。这个待往下了解会提到,暂时不用在意
在定义类后,会产生一个名称空间,我们可以通过类名.__dict__
来进行查看
print(Person.__dict__)
{
'__module__': '__main__', 'age': 10, 'f': <function Person.f at 0x7fc95eb9edc0>, '__dict__': <attribute '__dict__' of 'Person' objects>, '__weakref__': <attribute '__weakref__' of 'Person' objects>