2.1.2 面向对象:类的属性(Python)

本文来自异想之旅公开发布的Python教程,原文地址:https://www.yuque.com/yxzl/python

类的定义和实例化

我们使用class语句来定义一个类。

多说无益,还是上代码:

class Student:  # 约定上,Python 的类命名时通常每个单词都大写首字母
    # name 和 age 是类 Student 的属性
    name = ''
    age = 10

现在我们创建了Student,是时候实例化一个对象了:

a = Student()

实例化时,我们使用的语句格式为类名()。事实上这是调用了该类的初始化函数(这个会在下一节讲到),调用该函数会返回一个对象,我们只需要将它保存到一个变量中。

此时,我们便创建了基于Student对象a。至于具体如何去使用它,请继续往下看。

对象属性

经过上一节的学习,我们已经知道了属性到底是什么。具体到代码上,用规范的名称来讲,属性是通过成员变量实现的。

成员变量是定义在类中方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。如上例中定义的Student对象中就创建了nameage两个成员变量。

这个定义似乎有些拗口,看不懂也没有关系,为了以防概念混淆,我们在接下来的教程中也将一直使用“属性”的称呼。

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 —— 请永远不要这么做!

这一特性同样适用于下一节所将的方法。我们将不会再重复提及,届时有需要者请返回这里查看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

异想之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值