目录
- 面向对象基础
- 一、面向对象和面向过程
- 二、类与对象
- 三、产生对象
- 四、一切皆对象
面向对象基础
一、面向对象和面向过程
- 面向过程:
- 优点:复杂问题流程化,进而简单化
- 确定:可扩展性差
- 面向对象:
- 优点:可扩展性高
- 缺点:编写复杂度高于面向过程
二、类与对象
类即类别、种类,是面向对象设计最重要的概念,对象是特征与技能的结合体,而类则是一系列对象相似的特征与技能的结合体。
那么问题来了,先有的一个个具体存在的对象(比如一个具体存在的人),还是先有的人类这个概念,这个问题需要分两种情况去看。
在现实世界中:先有对象,再有类。
世界上肯定是先出现各种各样的实际存在的物体,然后随着人类文明的发展,人类站在不同的角度总结出了不同的种类,如人类、动物类、植物类等概念。
也就说,对象是具体的存在,而类仅仅只是一个概念,并不真实存在。
在程序中:务必保证先定义类,后产生对象。
这与函数的使用是类似的,先定义函数,后调用函数,类也是一样的,在程序中需要先定义类,后调用类。
不一样的是,调用函数会执行函数体代码返回的是函数体执行的结果,而调用类会产生对象,返回的是对象。
- 定义类:
class关键字 类名:
pass
- 产生对象:
对象 = 类名()
- 类:
- 获取类的属性和方法:类.__dict__
- 类来调用属性和方法:
- 通过dict来取(复杂,不建议使用)
- 类名.属性/函数
- 对象:
- 对象获取属性和方法:对象.__dict__
- 对象来调用属性和方法:对象.属性/方法
三、产生对象
绑定方法,属性的查找顺序
-
属性的查找顺序:
先从对象自身找--->类中找--->报错
-
对象赋属性:
-
方式一:
加入有一个学生类,给他一个名字
stu = Student()
stu.name = ‘sb‘
-
方式二:
- 在类中定义该方法,方法上写一些参数
- 在对象实例化产生对象的时候,在括号内传入值,会被传入到__init__中
-
绑定方法:
- 定义在类的内部
- 对象来调用,会自动把对象传送过来,在方法内部就可以进行修改该对象。
-
强调__init__
__init__方法
为对象初始化自己独有的特征
强调:
1、该方法内可以有任意的python代码
2、一定不能有返回值
-
python中类内置的特使属性
#python为类内置的特殊属性
类名.__name__# 类的名字(字符串)
类名.__doc__# 类的文档字符串
类名.__base__# 类的第一个父类(在讲继承时会讲)
类名.__bases__# 类所有父类构成的元组(在讲继承时会讲)
类名.__dict__# 类的字典属性
类名.__module__# 类定义所在的模块
类名.__class__# 实例对应的类(仅新式类中)
四、一切皆对象