Python学习(八)面向对象编程
Chapter 5 面向对象编程
面向对象编程(Object Oriented Programming),以对象作为程序的基本单元,其中对象包含了数据和操作数据的函数。
面向过程设计则将程序视作一系列命令集合,即通过函数来顺序运行,利用函数切分来降低复杂度。
面向对象设计则将程序视作一组对象的集合。对象可以接受、发送和处理信息。程序执行就是指消息在各对象的传递。
数据封装、继承和多态是面向对象的三大特点,后面会详细介绍。
5.1 类
Python中的所有数据类型都可以视为对象,而 类(Class) 就是自定义的对象数据类型。根据类来创建对象,就是 实例化(Instance)。
(1)定义和使用类
1)定义类
- 结构
class<类名>(父类名):
def __init__(self, 参数, …): # 构造函数
...
def 方法名1(self, 参数, …): # 方法1
...
def 方法名2(self, 参数, …): # 方法2
...
其中类名推荐首字母大写。
- 例
class Calculator:
name='Good Calculator' #class的属性
price=18
def add(self,x,y):
print(self.name)
result = x + y
print(result)
def minus(self,x,y):
result=x-y
print(result)
def times(self,x,y):
print(x*y)
def divide(self,x,y):
print(x/y)
类定义函数时,与普通函数定义不同的是,参数第一个必须是self
。
2)使用类
实例化方式:实例名=类名()
- 例
>>> cal=Calculator() #运行class的时候要加"()"
>>> cal.name
'Good Calculator'
>>> cal.price
18
>>> cal.add(10,20)
Good Calculator
30
>>> cal.minus(10,20)
-10
>>> cal.times(10,20)
200
>>> cal.divide(10,20)
0.5
(2)类的属性
数据含有自身的属性。Python中类的属性分为两类:实例属性和类属性。
1)实例属性
定义格式:self.属性名
或实例名.属性名
class Student(object):
def __init__(self, name):
self.name = name
属性名是name
调用格式:实例名.属性名
>>> s = Student('Bob')
>>> s.name
'Bob'
2)类属性
定义格式:属性名=
(class中直接赋值)
class Student(object):
name = 'Bob'
调用格式:类名.类变量名
>>> print(Student.name)
Bob
3)修改属性的值
- 给属性设定默认值。
class Calculator:
name='good calculator'
price=18
def __init__(self,name,price,height=10,width=14,weight=16): #后面三个属性设置默认值,查看运行
self.name=name
self.price=price
self.h=height
self.wi=width
self.we=weight
- 可通过实例访问,即
实例名.方法名
赋值修改。
>>> c=Calculator('bad calculator',18)
>>> c.h
10
>>>