2020年7月1日 / 41次阅读 / Last Modified 2020年7月1日
面向对象
python的面向对象语法比C++要简化了很多,比如类成员定义的时候,由于不需要实现申明,也就更没有private和public这样的关键词。有人说,python对象没有私有成员,这个说法,对也不对。
双下划线开头的成员,不管是变量还是函数,都可以说是私有的,只能内部访问。
class test():
def __init__(self):
self.__foo = 'foo'
self.__bar = 'bar'
def show(self):
self.__show()
def __show(self):
print(self.__foo)
print(self.__bar)
t = test()
t.show()
t.__show()
t.show()会成功,但是t.__show()会失败,python系统提示:AttributeError: 'test' object has no attribute '__show'
同样,直接访问t.__foo和t.__bar,一样失败,一样提示没有此属性。
双下划线,就是实现python私有成员的方法。
虽然双下划线开头的成员是私有的,但是还是可以访问。
class test():
def __init__(self):
self.__foo = 'foo'
self.__bar = 'bar'
def show(self):
self.__show()
def __show(self):
print(self.__foo)
print(self.__bar)
t = test()
t.show()
t._test__show()
print(t._test__foo)
print(t._test__bar)
用一个下划线加类名再加成员名称,就可以访问了。不过,一般项目中极少会出现这样的情况。
更多的情况是,大家习惯使用一个下划线开头来暗示这是私有的,但是你要访问也行!大家都是成年人......
-- EOF --
本文链接:https://www.pynote.net/archives/2113
前一篇:python中的集合操作
后一篇:如何使用@property装饰器
Ctrl+D 收藏本页
©Copyright 麦新杰 Since 2019 Python笔记