• 三、类的属性
    • 1、直接在类中定义属性
    • 2、在构造函数中定义属性
    • 3、属性的访问控制

    三、类的属性

    1、直接在类中定义属性

    定义类的属性,当然最简单最直接的就是在类中定义,例如:

    1. class UserInfo(object):
    2. name='两点水'

    2、在构造函数中定义属性

    故名思议,就是在构造对象的时候,对属性进行定义。

    1. class UserInfo(object):
    2. def __init__(self,name):
    3. self.name=name

    3、属性的访问控制

    在 Java 中,有 public (公共)属性 和 private (私有)属性,这可以对属性进行访问控制。那么在 Python 中有没有属性的访问控制呢?

    一般情况下,我们会使用 __private_attrs 两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs

    为什么只能说一般情况下呢?因为实际上, Python 中是没有提供私有属性等功能的。但是 Python 对属性的访问控制是靠程序员自觉的。为什么这么说呢?看看下面的示例:

    Python 属性访问控制

    仔细看图片,为什么说双下划线不是真正的私有属性呢?我们看下下面的例子,用下面的例子来验证:

    1. #!/usr/bin/env python
    2. # -*- coding: UTF-8 -*-
    3. class UserInfo(object):
    4. def __init__(self, name, age, account):
    5. self.name = name
    6. self._age = age
    7. self.__account = account
    8. def get_account(self):
    9. return self.__account
    10. if __name__ == '__main__':
    11. userInfo = UserInfo('两点水', 23, 347073565);
    12. # 打印所有属性
    13. print(dir(userInfo))
    14. # 打印构造函数中的属性
    15. print(userInfo.__dict__)
    16. print(userInfo.get_account())
    17. # 用于验证双下划线是否是真正的私有属性
    18. print(userInfo._UserInfo__account)

    输出的结果如下图:

    Python 属性访问控制