gpt4 book ai didi

python - 继承问题和 "self"引用

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:58 25 4
gpt4 key购买 nike

这是我的第一篇文章,所以首先我想说一声“谢谢!”一直到 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)

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

在子类中,当我使用 self.start() 方法时出现问题:执行的 self.__manage_request() 方法是父类中定义的方法,而不是方法在子类中定义(即使我想,当我执行 self.start() 时,start 方法及其内部的所有内容都应该引用子对象而不是父对象)。

提前致谢!

土耳其网

最佳答案

不要在您的方法和其他属性名称中使用两个前导下划线:它们专门旨在将父类与子类隔离开来,这绝对是您想要这里!将有问题的方法重命名为 _manage_request(单前导下划线),从此过上幸福的生活。并且在将来只有当您绝对确定您永远不想对该属性进行任何覆盖(或从子类方法访问)时才使用双前导下划线(方法只是属性的一个特例)。

在 C++ 术语中,单前导下划线表示 protected:允许并欢迎子类访问和覆盖。双前导下划线表示 private:意味着即使是子类也不干涉(并且通过一些编译器名称修改来帮助实现这一点)。我似乎很少使用双前导下划线来明确目的和对此的理解。

关于python - 继承问题和 "self"引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3504136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com