Pyhton 面向对象
1. 为什么需要面向对象
* 借助面向对象,可以创建大型程序,使功能模块化
* 可以向最终用户隐藏实现细节
例如scikit-learn 是一个Python 机器学习的软件包
from sklearn import svm X = [[0, 0], [1, 1]] y = [0, 1] clf = svm.SVC() clf.fit(X, y)
直接调用SVM模型, 用户并不需要知道SVM模型是如何工作与实现的。
2. 面向对象与面向过程
对象由特征与行为共同定义
|
3. 面向对象OOP术语
- 类(class) - 由方法和属性组成的范本
- 对象 (object)- 类的实例。将对象看做现实中的事物有助于理解,例如黄色铅笔、小狗、蓝色衬衫等等。
- 属性(attribute) - 描述或特征,比如颜色、长度、大小等等。这些属性可以有具体的值,例如蓝色、3 英寸、大,等等。
- 方法(method) - 类或对象可以采取的行为操作
- 封装 (encapsulation)- 面向对象编程的一个基本概念是封装:你可以将函数和数据都放入一个实体里。在面向对象编程中,这个实体叫做类。封装使你能够隐藏实现细节,就像 scikit-learn 软件包会隐藏机器学习算法的实现细节一样。
属性(attribute)也被称为 property(性质)、description(描述)、feature(特征)、quality(品质)、trait(特点)或 characteristic(特性),它们都指代同一个事物,即属性。
|
4. Python创建和使用类
4.1 创建类
# 文件名:dog.py # 类名首字母大写 # 创建Dog实例时,会自动运行__init__()方法,形参self必须,位于其他两个参数之前 # 以self为前缀的变量可供类中所有方法使用 class Dog: """模拟小狗的类""" def __init__(self, name, age): """初始化属性name和age""" self.name = name self.age = age def sit(self): """小狗蹲下的动作""" print(self.name.title() + "is now sitting.") def roll_over(self): """小狗打滚""" print(self.name.title() + "rolled over!")
函数和方法, 函数指在类的外面, 方法指在类的里面
self是用来区分不同的对象
4.2 使用类
实例化类,且打印类中的属性
my_dog = Dog('willie', 6) print("My dog's name is " + my_dog.name.title() + ".") print("My dog is " + str(my_dog.age) + "years old.")
调用类中的方法
# 调用方法 my_dog.sit() my_dog.roll_over()