函数可以把收集一些代码,列表可以收集变量(数据),对象可以把函数和数据收集在一起。
一、真实世界中的对象:
以篮球为例:通过颜色,大小,重量,价格等来描述一个球,这些就是球的属性,属性也叫(特性):一个物品(对象)本来就有的东西。
球拿到手,我们需要玩,比如捡球,抛球,拍球或者充气。我们把这些操作称为动作。
真实世界的真实对象(物品)包括两个方面
1、如何描述(属性或特性)
2、可以对它做什么(或是它自己能做什么)(动作)
二、Python中的对象
1、一些概念
在Python中,一个对象的特征也称为属性,动作称为方法。
1)球的属性:
ball.color
ball.size
ball.weight
2)球的方法:
ball.bounce()
ball.throw()
ball.inflate()
什么是属性:描述球的特征的一些信息(数字或字符串),也就是一些变量。
什么是方法:对象可以做的一些动作,或是被做的一些动作。它们是一些代码块,可以调用这些代码块来完成某个工作。方法就是包含在对象中的函数。
3)对象 = 属性 + 方法
4)这个点是什么:
对象名与属性或方法名之间的点ball.size, ball.throw(), 称为点记法。
2、创建对象:
1 创建一个类
2 使用类来建立一个真正的对象。这个对象称为这个类的实例。
对象的描述或蓝图称为一个类(class)
创建一个类:
这里是一个球的类定义,其中只有一个方法bounce(). 属性并不属于类,它们属于各个实例
创建一个对象实例:
使用这个对象:
print("My ball is:", myBall.size) print("My ball is:", myBall.color) print("My ball's direction is:", myBall.direction) myBall.bounce() print("Now the ball's direction is:", myBall.direction)
3、初始化:
开始时做好准备。在软件中对某个东西初始化时,就是把它设置成一种我们希望的状态或条件,以备使用。
一个特定的方法:__init__(self),只要创建这个类的一个新实例,就会自动运行这个方法。
class Ball: def __init__(self, color, size, direction): self.color = color self.size = size self.direction = direction def bounce(self): if self.direction == "down": self.direction = "up" myBall = Ball("red", "small", "down") print("My ball is:", myBall.size) print("My ball is:", myBall.color) print("My ball's direction is:", myBall.direction) myBall.bounce() print("Now the ball's direction is:", myBall.direction)
4、魔法方法: __str__()
创建类时Python自动包含的一些方法。
__init__()会在对象创建时完成初始化,每个对象实例都内置有一个__init__()方法。如果你在类定义中没有加入自己的__init__()方法,就会有这样一个内置方法接管,这绵工作就是创建对象。
__str__(),它会告诉Python打印一个对象时具体显示什么内容:
实例在哪里定义
类名
存储实例的内存位置(类似0x0000000014883E80这样的部份)
def __str__(self): msg = "ball, color:{},size:{},direction:{}".\ format(self.color, self.size, self.direction) return msg