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()

 

posted @ 2020-01-10 15:37  elewei  阅读(117)  评论(0编辑  收藏  举报