8.2 类的实例化 调用属性 调用方法

8.2 类的实例化 调用属性 调用方法

8.2.1 类的实例化 = 创建对象

类 = 设计图纸 = 模板
对象 = 根据图纸生产的对象
属性 = 对象的特征 = 汽车的颜色、大小
特征 = 对象的方法 = 汽车的功能向前开、向后开、刹车

工人根据设计图纸生产汽车。
Python根据类创建对象。
类的实例化意思是根据类生成一个实际的对象。
类的实例化就相当于生产汽车,也就是创建对象,只是类的实例化这个名字有点官方,太抽象,大家比较难理解。
我们可以这样理解:
类的实例化=创建对象=生产汽车

类的实例化语法格式为:
对象 = 类名( )
new_car = Cars()
new_car 是我们新生产的小汽车,这就是对象。
Cars 是我们的设计图纸,就是我们的类。
对象名和类名都是我们自己命名的,只要能见其名知其意,一段时间后回看代码你还能知道是什么意思就好。
假设我创建了一个学生类Stuedents,那对象我可以起名为student,类的实例化为:
student = Stuedents()

体验代码:类的实例化

# 定义类的语法:class 类名 :
# 定义一个车类 Cars 
# 类名要大写
class Cars:

    # 属性(外形构造)
    color = '红'
    shape = '小'
    
    # 初始化方法
    # 这个代码后面会讲
    def __init__(self):
        print('实例化成功,我们制造了一辆新车!')
    
    # 汽车方法 
    def drive(self):
        print('汽车正在向前开')

    def stop(self):
        print('汽车停车了!')

    def back(self):
        print('汽车正在倒车!')


# 实例化类 Cars,并命名为 new_car
# 实例化语法:对象=类名()
new_car = Cars()

【终端输出】

实例化成功,我们制造了一辆新车!

运行完上述的代码,就相当于我们制造了一辆新车,新车就是Python里的对象,起名为new_car。

8.2.2 调用类的属性

类的属性就相当于定义在类中的变量。
变量=属性
调用类的属性:
语法:对象.属性=对象.变量
作用是:查看对象的特征,即查看车的车的颜色(color)、大小(shape)。

对象.属性 调用类的属性

# 定义类的语法:class 类名 :
# 定义一个车类 Cars 
# 类名要大写
class Cars:
    # 属性:汽车的颜色
    color = '红'
    # 属性:汽车的大小
    shape = '小'

# 实例化类 Cars,并命名为 new_car
# 实例化类=创建对象=new_car
new_car = Cars()

# 调用属性语法:对象.属性  
# 调用属性并打印查看,new_car是对象,color是属性   
print(new_car.color)
# 调用属性并打印查看,new_car是对象,shape是属性  
print(new_car.shape)

【终端输出】

红
小

上述代码中的color 、shape 就是类Cars 的属性。
对象.属性=对象.变量
new_car.color 就是调用类的颜色属性,即查看车的颜色特征。

在类中我们定义了类的颜色属性color = ‘红’,当我们不不知道我们要生产的小汽车是什么颜色的时候,我们就用new_car.color调用类的属性,此时程序就会将color的值·传递给new_car.color,因此终端会输出

new_car.color调用了类 Cars 中的属性 color,值为’红’。
new_car.shape调用了类 Cars 中的属性shape,值为’小’。

8.2.3 调用类的方法

类的方法就是定义在类中的函数。
对象的行为、功能我们称之为方法。
汽车的方法(功能):向前开、刹车、倒车、左转、右转。
方法=自定义函数
调用类的方法:
语法:对象.方法名( )
作用是:调用对象的功能征,即驾驶车辆向前开,向后开,停车。

对象.方法名()调用类的方法

# 定义类的语法:class 类名 :
# 定义一个车类 Cars
# 类名要大写
class Cars:

    # 汽车的功能:类的3个方法 
    def drive(self):
        print('汽车正在向前开!')

    def stop(self):
        print('汽车停车了!')

    def back(self):
        print('汽车正在倒车!')
        
# 实例化类 Cars,并命名为 new_car
# 实例化类=创建对象=new_car
new_car = Cars()

# 对象.方法()调用类的方法   
new_car.drive()
new_car.stop()
new_car.back()

【终端输出】

汽车正在向前开!
汽车停车了
汽车正在倒车!

上述代码中drive stop back 就是类的三个方法,也是汽车的三个功能。
我们要驾驶汽车就是要调用类的方法。
color 、shape 就是类Cars 的属性。
new_car.drive() 就相当于我们挂了前进挡。
new_car.stop() 就相当于我们踩了刹车。
new_car.back() 就相当于我们挂了倒挡。

生活中我们是用手脚去完成驾驶的操作。
调用类的方法就相当于我们给程序下了一个指令,让它替人完成要完成的动作。
这样的叙述不一定准确,但对初学者而言这样的比喻很方便理解调用的作用。
等后面能熟练使用类的相关操作,对于创建对象、调用会有更深入和准确的理解。
类的相关操作,在爬虫中使用的比较频繁,有爬虫需要的要认真理解。

带着参数调用类的方法

上面的代码是调用时是没有参数的,因为图纸已经设置好我们生产的是红色的小汽车了。
如果我们在调用时传入参数,就可以改变汽车的特征和优化汽车的功能。

# 定义一个车类 Cars
class Cars:

    # 属性:汽车的颜色
    color = '红'
    # 属性:汽车的大小
    shape = '小'

    # 汽车的方法 
    def drive(self, color, shape,speed):
        print('一辆{}色的{}{}驶出了收费站!'.format(color, shape,speed))

new_car = Cars()
new_car.drive('黑', '跑车','飞速地')

【终端输出】

一辆黑色的跑车飞速地驶出了收费站!

上述代码完成了带参数的调用类的方法。
参数的传递语法:
1.参数值不传递给self,从第二参数开始传递。
2.上述参数的传递方法是按位置依次传递。
car.drive(‘黑’, ‘跑车’,‘飞速地’)中的先传递给 def drive(self, color, shape,speed)中的color,然后再赋值给print(‘一辆{}色的{}{}驶出了收费站!’.format(color, shape,speed))的color。

在这里插入图片描述

观察下面两段代码的输出内容:

代码1

# 定义一个车类 Cars
class Cars:
    # 属性:汽车的颜色
    color = '红'
    # 属性:汽车的大小
    shape = '小汽车'
    #属性:汽车的速度
    speed = '缓慢的'
    
    # 汽车的方法 
    def drive(self, color, shape, speed):
        print('一辆{}色的{}{}驶出了收费站!'.format(color, shape,speed))

new_car = Cars()
new_car.drive('黑', '跑车','飞速地')

【终端输出】

一辆黑色的跑车飞速地驶出了收费站!

代码2

# 定义一个车类 Cars
class Cars:
    # 属性:汽车的颜色
    color = '红'
    # 属性:汽车的大小
    shape = '小汽车'
    #属性:汽车的速度
    speed = '缓慢的'
    
    # 汽车的方法 
    def drive(self, color, shape,speed):
        print('一辆{}色的{}{}驶出了收费站!'.format(self.color, self.shape,self.speed))
new_car = Cars()
new_car.drive('黑', '跑车','飞速地')

【终端输出】

一辆红色的小汽车缓慢的驶出了收费站!

通过对比两段代码我们发现:
一辆黑色的跑车飞速地驶出了收费站!
一辆红色的小汽车缓慢的驶出了收费站!

代码1输出的参数是调用类的方法时传入的形参(‘黑’, ‘跑车’,‘飞速地’)。
代码2输出的参数是类里定义的变量的值(‘红’, ‘小汽车’,‘缓慢的’)。

为什么会有这样的区别呢?
.format(color, shape,speed)这样是使用调用类的方法时传入的形参。
.format(self.color, self.shape,self.speed)这样是使用类里定义的变量的值。

什么时候使用self,这要看我们是否需要类里定义的属性和方法。
要调用类内部(自定义的)的属性或方法时,要在属性和方法前面加上self.如:
self.属性名、self.方法名()

形参和类的变量的值可以混合使用
代码3

# 定义一个车类 Cars
class Cars:

    # 属性:汽车的颜色
    color = '红'
    # 属性:汽车的大小
    shape = '小汽车'
      
    # 汽车的方法 
    def drive(self,speed):
        print('一辆{}色的{}{}驶出了收费站!'.format(self.color, self.shape,speed))
new_car = Cars()
new_car.drive('缓慢地')

【终端输出】

一辆红色的小汽车缓慢地驶出了收费站!

值的传递过程:
(self.color, self.shape,speed) 中,前2个参数有self先调用类的变量的值color、shape;
第3个参数speed没有self,因此使用调用类的方法时传入的形参。

8.2.4 总结

在这里插入图片描述

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值