【发布时间】:2023-03-26 10:39:01
【问题描述】:
就像here 发布的问题一样,我想创建一个继承自作为参数传递的另一个类的类。
class A():
def __init__(self, args):
stuff
class B():
def __init__(self, args):
stuff
class C():
def __init__(self, cls, args):
self.inherit(cls, args)
args = #arguments to create instances of A and B
class_from_A = C(A, args) #instance of C inherited from A
class_from_B = C(B, args) #instance of C inherited from B
我想这样做,以便跟踪我对不同 Web api 的调用。我的想法是我只是将我自己的功能添加到任何 api 类型的对象中。链接问题的解决方案的问题是我不想通过额外的“层”来使用 api-type 对象。我想说obj.get_data() 而不是obj.api.get_data()。
我尝试研究 super() 的工作原理,但没有发现任何有用的东西(尽管我很容易错过一些东西)。任何帮助都会很好,对于我正在尝试做的事情,我愿意接受任何其他方法,但是,出于好奇,我想知道这是否可能。
【问题讨论】:
-
这似乎是XY problem。您可能想改用组合,就像链接的问题说的那样,尽管如何完成
obj.get_data = obj.api.get_data是另一个问题。那么,C究竟是如何跟踪对A和B的调用的呢?A和B方法一样吗? -
AutoEncoder类不有条件地继承链接问题的已接受答案中的任何内容。 -
@wjandrea 你可能是对的......如果我使用合成,你能指出我完成
obj.get_data = obj.api.get_data问题的方向吗? (坦率地说,我对继承或组合不是很熟悉) -
@Hudson 我们首先需要你提供一些信息,我已经要求过:“C 究竟是如何跟踪对 A 和 B 的调用的?A 和 B 有吗?同样的方法?”
-
@wjandrea A 和 B 没有相同的方法。我对 C 如何跟踪调用持开放态度:我在另一条评论中提到你的权利,这是一个 XY 问题。我应该编辑这个问题还是创建一个新帖子?
标签: python python-3.x class inheritance