【发布时间】:2017-09-13 12:26:28
【问题描述】:
这是我的代码 - 我的 base_file.py
class modify_file(object):
def modify_file_delete_obj():
print "modify file here"
def modify_file_add_attributes():
print "modify file here"
return ["data"]
class task_list(object):
modify_file_instance = modify_file() #problem part when accessing from project1.py
def check_topology():
data = modify_file_instance.modify_file_add_attributes()
#use this data further in this method
def check_particles():
print "check for particles"
project1.py 文件
import base_file as base_file
class project1(base_file.modify_file,base_file.task_list):
#overriding method of modify_file class
def modify_file_add_attributes(self):
print "different attributes to modify"
return ["different data"]
这个想法是为大多数项目运行 base_file.py,并在需要时为项目特定的项目运行。 但是当我运行该方法时
"check_topology" from project1.py
modify_file 类是从 base_file.py 而不是 project1.py 派生的
So the output is still ["data"] not ["different data"]
【问题讨论】:
-
在语义上,猫是宠物,但宠物并不总是猫。所以继承有点颠倒。意思是
cat应该是pet的子类(它可以是animal的子类)。 -
同意.. 我的实际代码在不同的上下文中...
-
我猜你应该从
pet类继承dog和cat类。 -
@user2015144 没问题,但是一个误导性的例子很难推理 - 这使得提出适当的解决方案变得困难/不可能。
-
在我的实际代码中,cat 类实际上有一些 ui 代码多线程,而 dog 类有一个套接字监听,但有一些更简单的方法,我想从单独的文件中重写(对于 pet 类那就是继承狗和猫)
标签: python inheritance multiple-inheritance