1. 面向对象编程— Object Oriented Programming
Define : 把对象作为程序的基本单元,对象既有数据又有操作数据的函数。
面向过程的程序设计:把程序看作一系列命令的集合,一组函数的顺序执行。
例如处理一个学生的成绩:
首先,表示一个学生的成绩
std1 = {'name':'liu','score': 90}
std2 = {'name':'zou','score': 99}
- 1
- 2
之后处理学生的成绩
def print_score(std):
print('%s: %s' % (std['name'], std['score']))
- 1
- 2
面向对象的程序设计: 把计算机程序看作一组对象的集合,每个对象都可以接收其他对象发过来的消息,并进行处理。
考虑的不是程序的执行流程, 而是处理的对象 student,这个对象包含什么(属性),对这个对象的操作(print)
class Student(object):
def __init__(self, name, score):
"""
初始化类的属性
"""
self.name = name
self.score = score
def print_score(self):
"""
类中的函数称为 Method
"""
print('%s: %s' % (self.name, self.score))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
2.类(Class)和实例(Instance)
面向对象设计思想来自自然界,主要概念是:类(Class)和实例(Instance)
Class 是一种抽象的概念,例如 鸟类 ; Instance 是根据类抽象的模版创建的具体的,比如 大雁 就是鸟类中具体的实例
1.类的定义
class Student(object):
pass
- 1
- 2
Student 是类名— 通常大写开头
object 是表示继承的类,如果没有,一般使用 object
继承和不继承object的区别—详见参考
在 python 3 中,括号没不加 object,也会默认 继承 object 类
2.创建实例
liu = Student()
>>> liu
<__main__.Student object at 0x106a03358>
>>> Student
<class '__main__.Student'>
- 1
- 2
- 3
- 4
- 5
liu 就是差 创建的一个实例 存放在 0x这个地址里面
Student 是一个 类 claas
3.绑定属性
可以在实例中绑定属性
>>> liu.name = 'liu'
>>> liu.score = 90
>>> liu.name
'liu'
- 1
- 2
- 3
- 4
由于类的作用就是一个模版,对于一些共有的属性可以写入类之中。 例如定义一个鸟的类,共性就是会飞,这个属性就可以写进,而这个 通过 init 实现
class Student(object):
def __init__(self, name, score):
"""
前后各有两个下划线
"""
self.name = name
self.score = score
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
第一个参数永远是 self,self 是创建的实例本身—详见参考
class Test():
def prt(self):
print(self)
print(self.__class__)
>>> T = Test()
>>> T.prt()
<__main__.Test object at 0x106a035c0>
<class '__main__.Test'>