python初级(302) 6 对象(一)

函数可以把收集一些代码,列表可以收集变量(数据),对象可以把函数和数据收集在一起。

一、真实世界中的对象:

以篮球为例:通过颜色,大小,重量,价格等来描述一个球,这些就是球的属性,属性也叫(特性):一个物品(对象)本来就有的东西。

球拿到手,我们需要玩,比如捡球,抛球,拍球或者充气。我们把这些操作称为动作。

真实世界的真实对象(物品)包括两个方面

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)

创建一个类:

image

这里是一个球的类定义,其中只有一个方法bounce(). 属性并不属于类,它们属于各个实例

创建一个对象实例:

image

使用这个对象:

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

三、练习

1、什么是对象

2、什么是类

3、什么是属性

4、什么是方法

5、创建一个dog类,dog的属性有颜色,大小,重量,方法有汪汪叫,摇尾巴,跑

6、创建一个cat类,cat的属性有颜色,大小,重量,方法有喵喵叫,捉老鼠

猜你喜欢

转载自www.cnblogs.com/luhouxiang/p/11828913.html