当 mixin 中的方法依赖于 class 的 mixin 方法时,我想问一下设计模式。 下面的例子是 python,但我相信其他语言也会出现这个问题。 例如,假设我有以下两个混入,我想注入一些 class。在下面的代码中,我想注入f但f要求 class 混入来实现g ,因为g将是用于ffrom a ...
当 mixin 中的方法依赖于 class 的 mixin 方法时,我想问一下设计模式。 下面的例子是 python,但我相信其他语言也会出现这个问题。 例如,假设我有以下两个混入,我想注入一些 class。在下面的代码中,我想注入f但f要求 class 混入来实现g ,因为g将是用于ffrom a ...
我现在遇到 C++ 类和 inheritance 的问题... 假设我们有 每当我创建D时,它都会调用B的构造函数和C的构造函数,这会导致A的多个实例。 然后编译器说它不知道应该调用哪个“函数”,是来自B的那个还是来自C的那个。 我想知道如何只调用A构造函数一次,然后用它来构建B和C 。 我已经尝试 ...
以下是两组代码:一组具有构造函数__init__() ,另一组具有display()方法。 代码一: 如果我们编译并运行上面的这组代码,output 将是: 现在,第二个代码块在下面, 如果在上面的第二个代码块中,我们将__init__()替换为display()方法,那么,由于class B中的 ...
我是 Python 的新手,无法理解 Python MRO。 有人可以尽可能简单地解释下面的问题吗? 为什么这段代码抛出TypeError: Cannot create a consistent method resolution : 虽然这段代码工作正常: ...
考虑以下代码片段: 关于上面的代码,我有两个问题: 是否也有必要从abc.ABC继承WithAbstract ,或者仅从Base继承WithoutAbstract就足够了? Pythonic 的处理方式是什么? 最佳做法是什么? ...
在多个inheritance的场景下,Python3是如何将arguments传递给所有父类的? 考虑下面的玩具程序: output 是: 我期望做的是将相同的 kwargs 传递给所有父类,并让他们根据需要使用这些值。 但是,我看到的是,一旦我关闭了第一个父 class A ,kwargs 就被 ...
此代码显示错误:AttributeError: 'super' object has no attribute 'method' 当在 class C中删除“super.method()”时,同样的代码不会显示错误。为什么? 我想知道,为什么这个程序在 class C 中包含“super().met ...
I am trying to inherit 2 classes as parent class in a child class both have different class variables class A has a,b while class B has c,d,e they a ...
如果参数满足特定条件,我希望某些属性和方法仅在类实例中可用。 不同的情况不是唯一的。 我已经有了一个可行的解决方案(包括 ShadowRanger 的建议): 属性和方法的可用性取决于实例参数: 基类的属性和方法应该始终可用。 如果第一个参数等于 3,则子类 _triangle 的属性和方法应该可用 ...
假设我们有两个类,每个类stuff以不同的方式计算属性。 是否可以将它们的输出组合到子类的方法/属性中? 下面的代码显示了预期的效果(尽管get_stuff_from需要用适当的 python 结构替换,如果存在的话)。class Foo(): @property def stuf ...
我正在练习 OOP 并不断遇到这个问题。 这是一个例子。 拿一个菱形倍数class inheritance排列,带Weapon feeding Edge和Long,都是双汉德继承的。 如果我在不继承 Weapon 的情况下对 Edge 进行编码,则代码可以正常工作。 但是一旦我将 Weapon 作 ...
我在访问成员变量时使用多个 inheritance 的某些代码中遇到错误。 不幸的是,我无法提供您可以运行的最小可重现示例,但我可以提供一堆关于我所看到的信息。 我的代码使用 GCC 编译为 ARM。 粗略地说,这就是我所拥有的(不是我的实际代码): 其中类 A、B 和 C 也从其他类多重继承。 ...
使用多个 inheritance 实现桥接模式有什么意义? GoF 在他们的《设计模式》一书中解释它的方式使它看起来与意图有悖常理。 另外,为什么多个 inheritance 使实现不符合真正的桥接模式? 非常感谢示例。 ...
假设您有 2 个混合类,每个类都定义了抽象方法和实现。 他们一起实现了每个方法,但根据 inheritance 的顺序,空存根将覆盖另一个 class 的实现。在大多数情况下至少有两种方法可以解决这个问题,但我不太喜欢这两种方法。 可以删除抽象方法,只依赖鸭子类型,但没有明确的接口定义和类型提示。 ...
是否可以在没有虚拟类的情况下重构多重继承? 也许任何人都有类似的问题或有经验来解决它,或者至少告诉我看哪种方式? 来自__init__.py的代码 ...
我有一个 class 和多个 inheritance。我想从一些父母的同名方法中连接 output。 理想情况下,我可以在不遍历所有父 class 的情况下执行此操作,而是明确选择我想要的案例。class my_class1: def common_method(self): return ...
我目前正在学习 Inheritance。 下面的代码工作得很好。 但是,下面的代码不起作用。 错误我只在这两个代码片段之间更改了一件事,就是在 class Employee 旁边添加了“public Student”。 我做错了什么? 请使用简单的文字/逻辑来解释这一点。 ...
我想计算 python 中具有多重继承的学生的总分和平均分。 但是,每当我为我的孩子 class 创建一个 object 时,它让我可以访问父类的所有方法,但是当我调用孩子 class 的方法时会显示 AttributeError。 我尝试使用 super() function 但结果是一样的。 我 ...
我试图了解 super 如何在 python 的多个 inheritance 中为超类工作,例如在下面的代码中: 如果我删除super().__init__(**kwargs)执行结束 '第三' object 没有属性 'parm2' 仅打印parm1和parm3 ,即使我在Class Third ...
我查看了答案https://stackoverflow.com/a/33469090/11638153和https://stackoverflow.com/a/27134600但不明白什么是“间接”。 具体来说,如果我有像下面这样的类,那么硬编码父 class __init__()是否有任何缺点或优 ...