问题标签 [abc]

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.

0 投票
1 回答
1153 浏览

python - 将类的私有变量定义为抽象

我想知道使我的类的私有变量抽象的正确方法是什么。让我总结一下我的变量的属性:

  • 类变量
  • 私人的
  • 抽象的

我的课程结构如下:

实现这一目标的正确方法是什么?

一种方法是将abc.abstractproperty装饰器用作:

或者,正如在 Python 中抽象属性的答案中提到的那样:

我想知道实现这一目标的正确方法(欢迎任何方法,即使我提到的方法除外)。


编辑:这是我想要做的一些描述:

  • 我有一个经理AbstractClass,他有一些与数据库相关的集合操作。它应该是抽象的,因为我不想要这个类的任何直接对象。还有一些没有定义的功能

  • ParentClass来源于AbstractClass. 它将具有一些与从数据库中获取特定项目相关的功能。同样,这个类也不知道它正在处理的数据库。

  • ChildClass实际上将拥有它应该与之交互的数据库引擎。由于可能有不同的引擎拥有相同的信息,我将在此处设置连接名称并基于此连接作为源,ParentClass函数将从数据库中获取信息。此外,ChildClass除了可以具有其他功能ParentClass

0 投票
1 回答
224 浏览

abc - 在 YOSYS 中运行 ABC 会返回“警告:检测到 1 个多输出门”

使用 YOSYS 时,我调用 abc 命令: abc -liberty mycells3.lib

mycells3.lib是一个简单的自定义技术库,基于 YOSYS 发行版中提供的示例库,我在其中添加了 ADDER 单元(名为 FAX1):

运行时,我收到以下警告: ABC: Warning: Detected 1 multi-output gates (for example, "FAX1") 确实没有我的模块使用这个单元格(这也可能是由其他原因引起的,但我的问题与这个事实无关)。我知道自由格式和 ABC 支持单元格中的多个输出。我的问题是如何使 ABC 的 YOSYS 接口接受多个输出单元?

我知道这是可能的,因为 Qflow 将 ABC 与包含具有多个输出的单元格的自由文件一起使用,例如,在文件“osu​​035_stdcells.lib”中,我们将 YC 和 YS 作为同一单元格的输出

0 投票
1 回答
512 浏览

python - 更新从抽象类继承的类

我有一个抽象类ship

我有多个继承自它的类(destroyer, cruiser, patrol_boat, 等等...)

目前,如果我要添加,让我们def do_more_stuff(self):ship

在我将它们重新输入控制台之前,这些更改不会影响任何子类。我该如何改变?

0 投票
0 回答
73 浏览

python - python: isinstance(value, Sequence[Real])

Python 的typing模块允许描述特定对象类型的容器,例如Sequence[numbers.Real]. 但是里面的容器接口collections.abc不接受这样的参数,所以只能勾选isinstance(value, abc.Sequence). 是否有任何直接检查isinstance(value, Sequence[numbers.Real])方法(不使用循环/理解等)

0 投票
1 回答
2556 浏览

python - 为什么在元类派生自ABCMeta的类中需要使用@abstractmethod?

PEP 3119指出:

装饰器只能在@abstractmethod类体内使用,并且只能用于元类为 (派生自) 的类ABCMeta。不支持向类动态添加抽象方法,或者在方法或类创建后尝试修改其抽象状态。

但是,我找不到为什么会这样的解释。具体来说,仅@abstractmethod在未显式继承自ABCMeta. 在下面的简单示例中,如果我理解正确,正确的做事方式是:

但是,如果我让Base类简单地继承自object,并且只在需要时使用装饰器,我注意到行为没有任何变化。

我发现即使在更复杂的架构上也是如此,所以我想知道:后一种方法什么时候会失败?

0 投票
1 回答
422 浏览

python - __name__ 上的抽象属性未强制执行

考虑以下示例代码:

请注意,子类没有实现 abstract 属性__name__,实际上,当__name__被引用时,它会从其父类打印为“抽象”:

然而,这不是因为__name__是一个 dunder 方法,也不是因为@property@abstractmethod装饰器不能很好地协同工作,因为如果我删除__add__from的实现Sub,它不会让我实例化它。(我知道__add__通常不是属性,但我想使用“真正的” dunder 方法)如果我删除 and 的实现,也会发生相同的预期__str__行为foo。只能__name__以这种方式行事。

是什么__name__导致了这种行为?有没有办法解决这个问题,还是我需要让父(抽象)实现手动TypeError为我提出?

0 投票
2 回答
1189 浏览

python - 没有“一致方法解析”错误的两级抽象类层次结构

我需要两级抽象类和第三级具体类:

此代码TypeError: Cannot create a consistent method resolution针对Quad. 我意识到问题是多重继承的歧义。 Quad不知道是直接从ABC还是从派生某些功能Shape,但我该如何解决?我不能ABCQuad' 的声明中删除,因为那样它就不再是抽象的了。

0 投票
1 回答
606 浏览

python - 了解 MappingView ABC

MappingView 容器和 Sized 容器有什么区别?有关如何实现 MappingView 容器的任何示例?

我可能完全误解了 ABC 和文档,但 MappingView 容器是任何继承自 Sized 的容器,对吗?如果是这样,那为什么我的虚拟示例不起作用?

0 投票
3 回答
928 浏览

python - 扩展python abc类的类的自动委托

如果某个类扩展了 abc 类(抽象基类),那么除非我定义所有抽象方法,否则我无法实例化它。但通常在实现装饰器模式时,我只想定义一些抽象方法,而其他方法 - 只是委托给装饰对象。这个怎么做?

例如,我想让以下代码工作:

代替

为此,我需要实现delegate上面示例中的方法。如何实施?也可以考虑为扩展 abc 类的类提供自动委托的一些其他方法。

PS请不要class MyElement(StandardElement)在这里建议我继承()作为解决方案......上面提供的代码只是一个示例。在我的真实案例中,MyElement 与 StandardElement 相比完全不同。不过,我必须使 MyElement 与 StandardElement 兼容,因为有时有人应该使用 MyElement 而不是 StandardElement。我真的需要在这里实现“有”关系,而不是“是”。

0 投票
2 回答
1373 浏览

python - 如何在 Python 的抽象基类中加入类型检查

当我定义一个类时,我喜欢包括assert输入变量的类型检查(使用)。我现在正在定义一个Rule继承自抽象基类 (ABC)的“专门”类BaseRule,类似于以下内容:

类函数中的语句assert确保输入是对象的列表(或其他可迭代的)。但是,对于其他继承自 的类也是如此,因此我想将这个断言合并到不知何故。我该怎么办?__init__RuleresourcesResourceBaseRuleabstractproperty