如何解决Pythonic 处理
我偶然发现了 mangling - 我在类函数名称中放置了两个下划线而不是一个 - 但我发现它非常有用。例如,我有各种对象需要在它们之间进行一些空中交通控制,以便我可以使用相同的函数调用它们的父对象,即 parentobject.__remove()
。使用 parentobject._remove_myclass()
没什么不同,但我有点喜欢 mangling!
Mangling 似乎旨在保护父类对象不被覆盖,所以利用这一点 a) “pythonic”,更重要的是 b) 可靠/一个好主意?
class myClass():
def __mc_func(self):
print ('Hello!')
def _yetAnotherClass__mc_func(self):
print ('Mangled from yetAnotherClass!')
def new_otherClass(self):
return otherClass(self)
def new_yetAnotherClass(self):
return yetAnotherClass(self)
class otherClass():
def __init__(self,myClass_instance):
self.mci = myClass_instance
def func(self):
self.mci.__mc_func()
class yetAnotherClass():
def __init__(self,myClass_instance):
self.mci = myClass_instance
def func(self):
self.mci.__mc_func()
g = myClass()
h = g.new_otherClass()
try:
h.func()
except AttributeError as e:
print (e)
#'myClass' object has no attribute '_otherClass__mc_func'
j = g.new_yetAnotherClass()
j.func()
#Mangled from yetAnotherClass!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。