继承问题和"自我"引用

tur*_*web 3 python

这是我的第一篇文章,所以首先我想说一个巨大的"谢谢!" 一直到stackoverflow社区一个答案为我做了诀窍:)

处理python的继承时遇到问题.

我有一个包含以下代码的父类:

def start(self):

  pid = os.fork()

  if (pid==0):
   self.__do_in_forked_process()
  elif(pid > 0):
   self.__do_in_parent_process()
  else:
   print ("Error while forking...")
   sys.exit(1)
Run Code Online (Sandbox Code Playgroud)

__do_in_forked_process()方法包含一个self.__manage_request()在父类中定义并在子类中重写的方法.

在子类中,当我使用使用的方法self.start()问题就出来了:自.__执行manage_request()方法是在父类而不是方法定义的一个定义的子类(即使,我想,当我做self.start()start方法及其中的所有内容应该引用子对象而不是父对象.

提前致谢!

turkishweb

Ale*_*lli 6

不要在方法和其他属性名称中使用两个前导下划线:它们专门用于将父类与子类隔离,这绝对是您想要的!将所讨论的方法重命名为_manage_request(单个引导下划线),并且从此过上幸福的生活.并且在将来使用双重前导下划线时,只有当你绝对确定你永远不会想要该属性的任何覆盖(或从子类方法中获取)时(方法只是属性的特殊情况).

在C++术语中,单个前导下划线表示protected:允许子类,欢迎访问和覆盖.双引导下划线意味着private:即使对于子类也是如此(并且使用一些编译器名称修改来帮助它).我很少看到双重领先的下划线用于明确的目的和对此的理解.