微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pythonic 处理

如何解决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 举报,一经查实,本站将立刻删除。