Class attributes

1. Define attributes directly in the class

Define the attributes of the class. Of course, the simplest and most direct way is to define them in the class, for example:

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

2. Define attributes in the constructor

The name suggests that the attributes are defined when constructing the object.

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

3. Attribute access control

In Java, there are public (public) properties and private (private) properties, which can control access to properties. So is there any attribute access control in Python?

Generally, we will use __private_attrs starting with two underscores to declare that the attribute is private and cannot be used or directly accessed outside the class. When using self.__private_attrs in a method inside a class.

Why can we only say that under normal circumstances? Because in fact, Python does not provide functions such as private attributes. However, Python's access control of attributes depends on the programmer's awareness. Why do you say that? Take a look at the following example:

2b7f8cc7d68ea31db222e5ad19ad696.png

Look at the picture carefully, why do you say that the double underline is not a real private attribute? Let's take a look at the following example and use the following example to verify:

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

The output result is as shown below:

c8042ea045950ea6cab0606f2de1873.png

Continuing Learning
||
submitReset Code