私有属性
- 属性和方法命名总结
python对类的成员没有严格的访问控制限制,这与其他面向对象语言有区别。关于私有属性和私有方法,有如下要点:
1.通常我们约定,两个下划线开头的属性是私有的(private)。其他的为公共的(public)。
2.类内部可以方位私有属性(方法)
3.类外部不能直接访问私有属性(方法)
4.类外部可以通过“_类名__私有属性(方法)名”访问私有属(方法)
【注】方法本质上也是属性!只不过是可以通过()执行而已。所以,此处讲的私有属性和公有属性,也同时讲解了私有方法和公有方法的用法。如下测试中,同时也包含了私有方法和公有方法的例子。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#测试私有属性、私有方法 class Employee: __company = "百战程序员" def __init__(self,name,age): self.name = name self.__age = age #私有属性 def __work(self): #私有方法 print("好好工作,赚钱娶媳妇!") print("年龄:{0}".format(self.__age)) print(Employee.__company) e = Employee("高淇",18) print(e.name) #print(e.__age) print(e._Employee__age) print(dir(e)) e._Employee__work() print(Employee._Employee__company)
执行结果
复制代码
1
2
3
4
5
6
7
8高淇 18 ['_Employee__age', '_Employee__company', '_Employee__work', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name'] 好好工作,赚钱娶媳妇! 年龄:18 百战程序员 百战程序员
从打印的Person对象所有属性我们可以看出。私有属性“__age”在实际存储时是按照“_Person__age”这个属性来存储的。这也就是为什么我们不能直接使用“__age”而可以使用“_Person__age”的根本原因。
属性和方法命名总结
·_xxx:保护成员,不能用“frommoduleimport*”导入,只有类对象和子类对象能访
问这些成员。
·__xxx__:系统定义的特殊成员
·__xxx:类中的私有成员,只有类对象自己能访问,子类对象也不能访问。(但,在类外
部可以通过“对象名._类名__xxx”这种特殊方式访问。Python不存在严格意义的私有成员)
最后
以上就是矮小枫叶最近收集整理的关于python中私有属性的使用属性和方法命名总结的全部内容,更多相关python中私有属性内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复