由于 Python 对面向对象有着良好的支持,因此在 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 输出如下:
今天的文章python中的定义_定义方法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/58277.html