问题标签 [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 - Python 抽象基类:为什么 abc 不阻止实例化?
据我了解,Python模块 abc 应该防止实例化未@abstractmethod
实现基类的所有标记方法的类(前提是基类已__metaclass__ = ABCMeta
设置)
但是,这似乎不适用于以下代码:
抽象基类:
子类缺少方法:
子类可以在(相当粗略的)测试代码中实例化。为什么呢?
我正在使用 Python 2.7。
c++ - 抽象类和基类一样吗?
抽象类和基类一样吗?
我偶尔会看到术语基类,但当我查找它的含义时,我倾向于看到“抽象类”。
它们只是两个意思基本相同的词吗?
c++ - C++ 设计问题:具有各种抽象基类的映射
我正面临设计问题,可以通过一些外部输入来解决。我试图避免抽象基类转换(因为我听说这很糟糕)。
问题归结于这种结构:
最初我以为我会逃脱:
并且...我做到了,但这会给我带来问题,因为我需要专门从敌对或友好的角度访问“独特”功能。
我已经不光彩地尝试过(工作但不喜欢它也不觉得安全):
我希望/试图维护用作基本抽象类类型的键的unordered_map
设计......无论如何,非常感谢输入。FactionType
如果有任何语法错误,我深表歉意。
python-3.x - 调用抽象基类构造函数
该库有一类神经网络。如果我创建一个网络 - 一切正常,但当我创建两个或更多网络时 - 其中一个停止学习。经过几个小时的错误搜索后,我发现如果我在初始化后调用基本构造函数 - 所有网络都学得很好。
如果代码看起来像
网络不学习。您可以在这里找到所有来源 -
我究竟做错了什么?
python - 为什么 __slots__ 从抽象基类继承时在 Python 2 和 3 中的行为不同
我创建了以下类,以一种内存有效的方式存储平面上的可变点 - 我需要一个可变的namedtuple('Point', 'x y')
. 由于实例字典很大,我想我会去__slots__
:
在 Python 3 上对其进行测试时,一切似乎都很好:
但是在 Python 2 上,z
即使它不在插槽中,我也可以设置属性:
为什么会这样,为什么 Python 2 和 Python 3 之间存在差异?
python - 在 Python 中,如何知道对象是否可以进行比较?
借助抽象基类,Python 提供了一种无需实际尝试即可了解对象行为的方法。在标准库中,我们在collections.abc中为容器定义了一些 ABC 。例如,可以测试一个参数是否可迭代:
我希望有一个这样的 ABC 来决定是否可以比较一个类的实例,但找不到。测试__lt__
方法的存在是不够的。例如,字典无法比较,但__lt__
仍被定义(与object
实际相同)。
所以我的问题是:有没有一种简单的方法可以做到这一点,而无需自己进行比较并捕获TypeError
?
我的用例类似于排序容器:我想在插入第一个元素时引发异常,而不是等待第二个元素。我考虑过将元素与自身进行比较,但有没有更好的方法:
python - Python 2.7——从实例调用抽象基类的方法
我正在寻找从注册为 ABC 的子类的类的实例中调用抽象基类方法的正确方法。这是一些非常基本的测试代码,首先要弄清楚如何使其工作。这是我目前所在的位置:
虽然这种方法似乎过于复杂地改变了两个 Dog 方法,但我希望能够灵活地将行为分配给未知数量的实例。我希望能够在实例不知道实际行为的情况下调用 speak() 和 move()。我也喜欢这种方法,因为我也能够轻松删除或更改注册类的行为,而无需更改任何现有代码。
当前代码读取的方式 nora.speak() 和 nora.move() 调用从 Dog 到 Beagle 的继承方法,其中只包含 pass。
如果有人对我需要做什么以使注册行为的方法可调用有任何见解,或者我的方法是否完全有缺陷,我将不胜感激。
python-2.7 - 测试 Python 代码是否只使用 ABC 方法
假设我有一个记录为采用collections.Sequence
ABC的函数。如何针对 ABC 接口测试此函数中的代码?我是否可以编写一个单元测试(或多个测试)来确认我的代码仅调用此 ABC 定义的方法,而不是例如由 ABC 定义的方法list
或其他具体实现collections.Sequence
?或者是否有其他工具或方法来验证这一点?
python - 初始化派生自和抽象类的类时出现python错误
我有这个简单的代码,我得到一个奇怪的错误:
我究竟做错了什么?理论上的解释将不胜感激。
django - 用于处理不同业务级别的相似/相同对象的数据库结构
设想
一家著名的 taco 机构想要构建一个 Django 应用程序,其中包含Combo
、ComboItem
、Ingredient
和Order
.
- 总部想要创建包含项目的各种组合,并布置原始项目成分和价格。
- 然后,每个特许经营商可以选择他们将在他们的菜单上销售的组合,并允许调整他们商店的组合项目的价格和成分。
- 当收到订单时,组合和项目详细信息应显示在日志上,并且如果总部重命名组合或特许经营更改价格/成分,则将来不应更改。
用例
HQ 创建了“Hot Taco Combo”。它具有三个相关的组合项目
- 一个炸玉米饼(价格:0.99 美元,配料:贝壳、牛肉、奶酪、辣酱)
- 油条螺旋(价格:0.79 美元)
- 饮料(价格:1.29 美元)
纽约特许经营店将 Hot Taco Combo 添加到他们的菜单中。他们将炸玉米饼的价格调整为 1.49 美元,并在炸玉米饼中加入生菜。
一位顾客订购了玉米卷上没有奶酪的组合。
HQ 将组合的名称更改为 Fiery Taco Combo - 纽约的组合名称更新,但 taco 保持相同的定制价格,仍然包括生菜。
NY 特许经营店的一位经理查看了所有订单,并看到了Hot Taco Combo的一份订单,而炸玉米饼的原料只有壳、肉和生菜。
问题
我正在努力确定处理此问题的最佳方法,因为 aCombo
在所有三个级别上基本上是相同的对象,但其相关ComboItem
对象可能不同。HQ 应该能够更新 Combo 属性,例如名称,它会更新所有特许经营组合名称,但组合项目自定义应该保留。此外,为了准确的订单记录,销售点的组合细节和定制一旦记录就不应更改。
最初我想AbstractBaseClass
在每个业务级别上为每个相关模型和从它们继承的对象都有一个,但这种结构感觉冗余且难以维护。
然后我想使用GenericForeignKey
将组合与总部、特许经营权或订单相关联,并在必要时复制对象,因为它们向下移动。这感觉很奇怪并且容易出错。
有没有人处理过这样的案例或有什么建议?这只是一个复杂的问题并需要一个复杂的解决方案,还是我缺少一种简单的方法?先感谢您。