问题标签 [abstract-base-class]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - 获取 ABCMeta 的所有已注册子类
我有一个类似于以下的目录结构:
model.py
包含一个抽象基类:
文件夹中models
是这个基类的两个实现,model_a.py
和model_b.py
,它们将自己注册到主Base
类。 model_a.py
看起来像这样:
并且model_b.py
是相似的。
现在,我要做的main.py
是创建一个包含所有子类的字典,Base
以便我可以选择一个(通过我的程序的 GUI)并运行它:
但我无法让它工作。RuntimeError: Refusing to create an inheritance cycle
当我尝试执行派生类之一并且字典main.py
为空时,我得到了。
c++ - C++ - 打印矢量 派生类对象的元素
我有一个名为的抽象类Pet
和三个派生类Cat
Dog
Goldfish
。我正在尝试将它们存储在矢量中并打印宠物名称。但我得到了一些十六进制数。我不知道我在哪里做错了。
List.hpp 文件
这是主要功能
python - 多重继承依赖 - Base 需要 AbstractBaseClass
问题的要点:如果继承多个类,我怎么能保证如果一个类被继承,子对象也使用一个恭维抽象基类(abc)。
我一直在搞乱pythons继承,试图看看我能做什么很酷的事情,我想出了这个模式,这很有趣。
我一直在尝试使用它来更轻松地实现和测试与我的缓存交互的对象。我有三个模块:
- ICachable.py
- 可缓存的.py
- 一些类.py
ICacheable.py
可缓存的.py
一些类.py
所以这个例子有效,但可怕的是没有保证继承的类Cacheable
也继承ICacheable
。这似乎是一个设计缺陷,因为Cacheable
它本身没有用。然而,从我的子类/子类中抽象事物的能力是强大的。有没有办法保证 Cacheable 对 ICacheable 的依赖?
c++ - 命名参数习语和(抽象)基类
假设我正在用 C++11 编写一个 3D 渲染器,我在其中创建材质并将它们分配给模型。
我希望能够使用命名参数成语创建材质,如下所示:
然后我可以创建一个这样的模型:
我还希望能够将材料作为 r 值传递:
在这个简单的用例中,我可以这样编写我的Model
类:
问题
我想创建Material
一个抽象基类,以便可以为特定种类的材料创建自定义实现。这意味着在我的Model
我必须存储一个指向材料的指针(甚至是引用)。但后来我不能再将材料作为 r 值传递。
我可以选择使用std::shared_ptr<Material>
成员变量,但是使用命名参数习语变得更加困难,因为在这种情况下我将如何构造材料?
你们中有人对我有什么好的建议吗?
更详细的示例代码
c++ - C++ 实现抽象类
我正在尝试编写一个名为 TerminalPlayer 的派生类,它在给定虚拟 const Card playCard(const Card contrastCard) = 0; 的声明的情况下继承一个 Player 类 您将如何在抽象类中实现继承的 playCard 以及原型末尾的 = 0 是什么意思?
我在主要测试代码中也有错误,它给出了错误:无法分配抽象类型“播放器”的对象。我认为这是因为我没有正确实现 Player 类,但我不知道如何修复它。
播放器.h
终端播放器.h
终端播放器.cpp
测试.cpp
c# - 我不明白为什么在基类中测试可能的接口是错误的
我有一个抽象基类,它将用于数百个派生类,包括一个额外的抽象类。
至少有 2 个属性(我们称它们为目的和描述,都是字符串)将添加到许多(但不是全部)具体派生类中,因此我创建了接口(IPurposeful 和 IDescribable)以在需要时添加它们。到目前为止一切都很好。
我想要一个方法,我可以调用从我的基类派生的所有类,如果它确实是 IDescribable,它将验证和更新 Description 属性,或者如果它不是 IDescribable,则只返回 true。我想要另一种类似的方法来验证/更新目的属性。
我通过基类中的一个方法实现了这一点,它看起来像这样:
SonarQube 将“这是 IDescribable”检查标记为阻止程序(不好的做法),我想知道为什么?我能想到的复制此功能的唯一其他方法是将基本方法更改为:
然后将这个完全相同的方法添加到可能的数百个派生类中:
现在这似乎是不好的做法。
编辑:更改了 is/as 模式以消除冗余
c++ - C++:对 ABC 的子类强制执行单例
在已经存在的模拟框架中,我试图在已经存在的模型抽象基类上实现状态模式。由于模型类只是一个 ABC,因此状态也应该是。我正在寻找一种方法来对州 ABC 的所有可能的子类强制执行单例模式。
这是我到目前为止所尝试的:
这是我所在州的ABC:
上下文类采用相同的三个模板参数,因为它需要知道其状态的类型。并且一个新的类模板最终继承自 Context 和所用模型的 ABC。
我现在尝试为在模拟中使用的具体状态创建一个基类,方法如下(需要这个基类,以便所有 Context 具有相同的类型):
现在我遇到两个问题:
1)显然状态库的每个孩子的getInstance()方法只会产生一个状态库
2)如果我不使用 statebase 类型作为模板参数,而是使用具体类型,则 Context 将不匹配(例如,带有参数 StateIdle 的 Context 显然与带有参数 StateProducing 的 Context 类型不同)
所以我的问题是:有没有办法强制所有未来的 State 子类成为 Singleton?或者在 C++ 中这种方式是不可能的?
PS:如果您的回答是 Sigletons 是一种反模式/不良设计等,或者我应该使用 boost:请不要。谢谢。
c# - 基类操作中的属性路由继承了 Controller MVC C#
我正在使用以下结构,其中我使用以下基类结构来实现视图。
www.localhost.com/Entity1 的网页给出了索引视图的结果[应该是],但是当我尝试使用属性路由搜索 url 时,例如。www.localhost.com/Entity1/Add
or www.localhost.com/Entity1/Edit/1
or www.localhost.com/Entity1/GetAll
and so 其他方法,它们不会省略任何结果。
如果我在我的地址中使用约定路由 [而不是www.localhost.com/Entity1/Add
使用www.localhost.com/Entity1/AddorEditEntity
],此应用程序会呈现视图并显示 Web 结果。
如果我直接从 Controller 定义相同的方法,即使用继承 Controller 直接到Entity1Controller
[for ex. public class Entity1Controller : Controller
,而不是上面显示的基本继承模型],属性路由工作文件顺利。
我试图用谷歌搜索它,并且知道了,DefaultDirectRouteProvider
但这仅适用于ApiController
. 我想在 MVC 应用程序中使用相同的 [ie Controller
]。这样当我通过以下地址访问 AddorEditEntity 方法时,www.localhost.com/Entity1/Add
它应该呈现视图。
请告知这是否可能。
c# - 抽象类构造函数调用可重写方法
我尝试创建一个良好的可测试存储库类以与 Moq 一起使用。我不想重复我的选择器方法(GetAll
, Get
, ...)。我的实现工作正常,但 SonarSource 报告错误RSPEC-1699有人知道更好的实现吗?
基类
我的区域存储库
python - 在抽象基 int 类中使用“__and__”方法
我试图了解__and__
抽象基 int 类的方法。在这里,我以两种不同的方式调用了该方法。在几乎所有情况下,这两种方式的行为都符合我的预期,它们输出第二个值,因为这两个值都是“真实的”。但是在两个数字之和 = -1 的特殊情况下,第一种方式打印 0。谁能说出为什么?