本文来自异想之旅公开发布的Python教程,原文地址:https://www.yuque.com/yxzl/python
类的定义和实例化
我们使用class
语句来定义一个类。
多说无益,还是上代码:
class Student: # 约定上,Python 的类命名时通常每个单词都大写首字母
# name 和 age 是类 Student 的属性
name = ''
age = 10
现在我们创建了Student
类,是时候实例化一个对象了:
a = Student()
实例化时,我们使用的语句格式为类名()
。事实上这是调用了该类的初始化函数(这个会在下一节讲到),调用该函数会返回一个对象,我们只需要将它保存到一个变量中。
此时,我们便创建了基于Student
类的对象a
。至于具体如何去使用它,请继续往下看。
对象属性
经过上一节的学习,我们已经知道了属性到底是什么。具体到代码上,用规范的名称来讲,属性是通过成员变量实现的。
成员变量是定义在类中且方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。如上例中定义的Student
对象中就创建了name
和age
两个成员变量。
这个定义似乎有些拗口,看不懂也没有关系,为了以防概念混淆,我们在接下来的教程中也将一直使用“属性”的称呼。
class Student:
name = ''
age = 10
a = Student()
a.name = '小明'
print(a.name, a.age)
a.age += 5
print(a.name, a.age)
a.address = '青岛'
print(a.address)
输出如下:
小明 10
小明 15
青岛
我们可以直接使用对象.属性
的格式去访问对象的属性,并且可以将其当作普通变量对待,例如第九行就使用了变量的自增操作。
同时,还可以使用这样的语句去为对象创建新的属性,如上例中第十二、十三行所示。
保护的属性
我们可以在变量名前加上 _
提示用户不要使用该属性,而加上 __
可以禁止用户使用该属性。
class Student:
name = 'test'
_age = 114514
# __grade 等价于 _Student_grade,但是请不要在实际代码中这样使用,除非你知道自己在干什么
__grade = 1
a = Student()
print(a.name, a._age) # 输出:test 114514
print(a.__grade) # 报错
print(a._Student_grade) # 输出:1 —— 请永远不要这么做!
这一特性同样适用于下一节所将的方法。我们将不会再重复提及,届时有需要者请返回这里查看。