python中私有属性和受保护的属性(转)
2021/9/12 22:06:34
本文主要是介绍python中私有属性和受保护的属性(转),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
class People: def __init__(self, name, age): self.name = name self.age = age self._protect_var = 10 # 受保护的成员,使用一个下划线_,它仅仅是提示成员受保护,但可以被更改 self.__private_var = 10 # 使用双下划线__可以定义私有属性 def sayhi(self): print("Hi, my name is {}, and I'm {}".format(self.name, self.age)) def get_var(self): print(self.__private_var) def set_var(self, var): self.__private_var = var # class instance 类的实例化 someone = People(name='Jack', age=20) # 类的实例化 print(someone._protect_var) # 10 受保护的成员可以被打印 someone._protect_var = 20 # 受保护的成员可以被修改 print(someone._protect_var) # 20 可以被修改 print(someone.__private_var) # 报错 AttributeError: 'People' object has no attribute '__private_var' someone.__private_var = 30 # 此处可以被修改,不会报错(此处表示私有属性可以被修改,具体原因可以百度) print(someone.__private_var) # 可以打印,不会报错 someone.get_var() # 10 此处可以发现,__private_var在上面被改成30,但此处打印出来却是10(具体原因可以百度) someone.set_var(40) someone.get_var() # 40 这里通过someone.set_var(40)改成了40 print(dir(someone)) # dir()打印出someone这个对象支持的属性和方法 # ['_People__private_var', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__private_var', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_protect_var', 'age', 'get_var', 'name', 'sayhi', 'set_var'] # 在类的内部重命名了 __private_var重命名成_People__private_var someone._People__private_var = 100 someone.get_var() # 100 通过_People__private_var把__private_var的值改成了100
原文链接:https://blog.csdn.net/sehanlingfeng/article/details/92245538
这篇关于python中私有属性和受保护的属性(转)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Python基础编程
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南