2021-07-16

@python·对类定义的理解与使用

一、类的定义
在 Python 中,类的定义与函数的定义类似,所不同的是,类的定义是使用关键字 “class”。与函数定义相同的是,在定义类时也要使用缩进的形式,以表示缩进的语句属于该类。类的定义形式如下。

class <类名>:
<语句1>
<语句2>

<语句3>
与函数定义相同,在使用类之前必须先定义类。类的定义一般放在脚本的头部。在 Python 中也可以在 if 语句的分支或者函数定义中定义类。下面的代码定义了一个 human 类,并定义了相关的属性。

class human:    # 定义 human 类
    age = 0     # 定义 age 属性
    sex = ''    # 定义 sex 属性
    height = 0  # 定义 height 属性
    weight = 0  # 定义 weight 属性
    name = ''   # 定义 name 属性

类还可以通过继承的形式来进行定义。通过类继承来定义类的基本形式如下。

class <类名>(父类名):
<语句1>
<语句2>

<语句3>
其中圆括号中的父类名就是要继承的类。以下所示的代码是通过继承 human 类来生成一个新类。

class student(human):    # 通过继承 human 类创建 student 类
    school = ''          # 定义 weight 属性
    number = 0           # 定义 weight 属性
    grade = 0            # 定义 weight 属性

上述通过 human 继承而来的 student 类,自动继承了 human 中的属性。同时在上面的代码中又为 student 类定义了其他的属性。

类定义后就产生了一个名字空间,与函数类似。在类内部使用的属性,相当于函数中的变量名,还可以在类的外部继续使用。类的内部与函数的内部一样,相当于一个局部作用域。不同类的内部也可以使用相同的属性名。

二、类的使用
类在定义后必须先实例化才能使用。类的实例化与函数调用类似,只要使用类名加圆括号的形式就可以实例化一个类。

类实例化后会生成一个对象。一个类可以实例化成多个对象,对象与对象之间并不会相互影响。类实例化后就可以使用其属性和方法等。下面的代码首先定义了一个 book 类,然后将其实例化。

class book:  # 定义 book 类
    author = ''  # 定义 author 属性
    name = ''  # 定义 name 属性
    pages = 0  # 定义 pages 属性
    price = 0  # 定义 price 属性
    press = ''  # 定义 press 属性
 
 
a = book()  # book 类实例化
print(a)  # 查看对象 a
print(a.author)  # 访问 author 属性
print(a.pages)  # 访问 pages 属性
print(a.price)  # 访问 price 属性
 
a.author = 'Tutu'  # 设置 author 属性
a.pages = 300  # 设置 pages 属性
a.price = 25  # 设置 price 属性
print(a.author)  # 重新访问 author 属性
print(a.pages)  # 重新访问 pages 属性
print(a.price)  # 重新访问 price 属性
 
b = book()  # 将 book 类实例化生成 b 对象
print(b.author)  # 访问 b 对象的 author 属性
print(b.price)  # 访问 b 对象的 price 属性
b.author = 'Butter'  # 设置 b 对象的 author 属性
b.price = 15  # 设置 b 对象的 price 属性
 
print(b.price)  # 访问 b 对象的 price 属性
print(a.price)  # 访问 a 对象的 price 属性,没有发生改变
print(b.author)  # 访问 b 对象的 author 属性
print(a.author)  # 访问 a 对象的 author 属性,没有发生改变
print(b.pages)  # 访问 b 对象的 pages 属性
print(a.pages)  # 访问 a 对象的 pages 属性

上面的脚本输出结果如下:

在这里插入图片描述

上述例子只定义了类的属性,并在类实例化后重新设置其属性。从代码中可以看出,类的实例化相当于调用一个函数,这个函数就是类。函数返回一个类的实例对象,返回后的对象就具有了类所定义的属性。上述例子生成了两个 book 实例对象,设置其中一个对象的属性,并不会影响到另一个对象的属性,也就是说,这两个对象是相互独立的。

在 Python 中需要注意的是,虽然类首先需要实例化,然后才能使用其属性。但实际上当创建一个类以后就可以通过该类名访问其属性。如果直接使用类名修改其属性,那么将影响已经通过该类实例化的其他对象。演示代码如下。

class A: # 定义类 A
name = ‘A’ # 定义属性 name 将其赋值为 ‘A’
num = 2 # 定义 num 属性将其赋值为 2

print(A.name) # 直接使用类名访问类的属性
print(A.num) # 直接使用类名访问类的属性

a = A() # 生成 a 对象
print(A.name) # 查看 a 的 name 属性

b = A() # 生成 b 对象
print(b.name) # 查看 b 的 name 属性

A.name = ‘B’ # 使用类名修改 name 属性
print(a.name) # a 对象的 name 属性被修改
print(b.name) # b 对象的 name 属性也被修改
每一次的 print 输出如下:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值