Python-"私有"属性

python

Python属性访问的软限制

不同于JAVA,Python中并不限制属性访问,也没有private修饰符,访问限制一靠自觉,二靠对属性名的修改。

这里整理常见属性名写法:

class Person:

def __init__(self):

# 公有属性,可以访问

self.name = 'ming'

# 表示不建议访问,但可以访问

self._age = 20

# 表示强烈不建议访问并偷偷将属性名修改为 _Person__gender, 规律是加上{_类名}前缀,所以只要知道真实名称,依然可以访问

self.__gender = 'male'

# 表示这是内置特殊属性或者特殊方法,比如 __init__, __dict__等,但依然可以定义自有属性,和_age一样可以访问

self.__hello__ = 'hello'

# 子类访问方式和父类一样

class Student(Person):

pass

尝试访问一下:

print(person.name)

print(person._age)

print(person._Person__gender)

print(person.__hello__)

print(student.name)

print(student._age)

print(student._Person__gender)

print(person.__hello__)

# 结果

ming

20

male

hello

ming

20

male

hello

访问没有问题,然后看一下实际的属性名称:

print(person.__dict__)

print(student.__dict__)

# 结果

{'name': 'ming', '_age': 20, '_Person__gender': 'male', '__hello__': 'hello'}

{'name': 'ming', '_age': 20, '_Person__gender': 'male', '__hello__': 'hello'}

从上述结果可以看出,Python并不会限制你干什么,只是建议或者约定一个合理的做法,至于是否遵守,全看开发者心情。

以上是 Python-"私有"属性 的全部内容, 来源链接: utcz.com/z/389358.html

回到顶部