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


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

    类的定义和实例化

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

    多说无益,还是上代码:

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

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

    a = Student()
    
    • 1

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

    此时,我们便创建了基于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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    输出如下:

    小明 10
    小明 15
    青岛
    
    • 1
    • 2
    • 3

    我们可以直接使用对象.属性的格式去访问对象的属性,并且可以将其当作普通变量对待,例如第九行就使用了变量的自增操作。

    同时,还可以使用这样的语句去为对象创建新的属性,如上例中第十二、十三行所示。

    保护的属性

    我们可以在变量名前加上 _ 提示用户不要使用该属性,而加上 __ 可以禁止用户使用该属性。

    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 —— 请永远不要这么做!
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

  • 相关阅读:
    2023/9/9总结
    编译原理及技术(八)——代码形式
    网课查题API接口(免费)
    Redis-Linux中安装Redis、命令操作Redis
    阿木实验室PrometheusV1.1安装+Ubuntu 20.04
    数据结构--栈,队列
    轻松了解JVM
    安卓讲课笔记5.11 菜单
    【一起来学C++】————(6)C++中的继承
    QT::QString 很全的使用
  • 原文地址:https://blog.csdn.net/weixin_44495599/article/details/126184755