问题标签 [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.
python - 将类的私有变量定义为抽象
我想知道使我的类的私有变量抽象的正确方法是什么。让我总结一下我的变量的属性:
- 类变量
- 私人的
- 抽象的
我的课程结构如下:
实现这一目标的正确方法是什么?
一种方法是将abc.abstractproperty
装饰器用作:
或者,正如在 Python 中抽象属性的答案中提到的那样:
我想知道实现这一目标的正确方法(欢迎任何方法,即使我提到的方法除外)。
编辑:这是我想要做的一些描述:
我有一个经理
AbstractClass
,他有一些与数据库相关的集合操作。它应该是抽象的,因为我不想要这个类的任何直接对象。还有一些没有定义的功能ParentClass
来源于AbstractClass
. 它将具有一些与从数据库中获取特定项目相关的功能。同样,这个类也不知道它正在处理的数据库。这
ChildClass
实际上将拥有它应该与之交互的数据库引擎。由于可能有不同的引擎拥有相同的信息,我将在此处设置连接名称并基于此连接作为源,ParentClass
函数将从数据库中获取信息。此外,ChildClass
除了可以具有其他功能ParentClass
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 与包含具有多个输出的单元格的自由文件一起使用,例如,在文件“osu035_stdcells.lib”中,我们将 YC 和 YS 作为同一单元格的输出
python - 更新从抽象类继承的类
我有一个抽象类ship
。
我有多个继承自它的类(destroyer
, cruiser
, patrol_boat
, 等等...)
目前,如果我要添加,让我们def do_more_stuff(self):
说ship
在我将它们重新输入控制台之前,这些更改不会影响任何子类。我该如何改变?
python - python: isinstance(value, Sequence[Real])
Python 的typing
模块允许描述特定对象类型的容器,例如Sequence[numbers.Real]
. 但是里面的容器接口collections.abc
不接受这样的参数,所以只能勾选isinstance(value, abc.Sequence)
. 是否有任何直接检查isinstance(value, Sequence[numbers.Real])
方法(不使用循环/理解等)
python - 为什么在元类派生自ABCMeta的类中需要使用@abstractmethod?
PEP 3119指出:
装饰器只能在
@abstractmethod
类体内使用,并且只能用于元类为 (派生自) 的类ABCMeta
。不支持向类动态添加抽象方法,或者在方法或类创建后尝试修改其抽象状态。
但是,我找不到为什么会这样的解释。具体来说,仅@abstractmethod
在未显式继承自ABCMeta
. 在下面的简单示例中,如果我理解正确,正确的做事方式是:
但是,如果我让Base
类简单地继承自object
,并且只在需要时使用装饰器,我注意到行为没有任何变化。
我发现即使在更复杂的架构上也是如此,所以我想知道:后一种方法什么时候会失败?
python - __name__ 上的抽象属性未强制执行
考虑以下示例代码:
请注意,子类没有实现 abstract 属性__name__
,实际上,当__name__
被引用时,它会从其父类打印为“抽象”:
然而,这不是因为__name__
是一个 dunder 方法,也不是因为@property
和@abstractmethod
装饰器不能很好地协同工作,因为如果我删除__add__
from的实现Sub
,它不会让我实例化它。(我知道__add__
通常不是属性,但我想使用“真正的” dunder 方法)如果我删除 and 的实现,也会发生相同的预期__str__
行为foo
。只能__name__
以这种方式行事。
是什么__name__
导致了这种行为?有没有办法解决这个问题,还是我需要让父(抽象)实现手动TypeError
为我提出?
python - 没有“一致方法解析”错误的两级抽象类层次结构
我需要两级抽象类和第三级具体类:
此代码TypeError: Cannot create a consistent method resolution
针对Quad
. 我意识到问题是多重继承的歧义。 Quad
不知道是直接从ABC
还是从派生某些功能Shape
,但我该如何解决?我不能ABC
从Quad
' 的声明中删除,因为那样它就不再是抽象的了。
python - 了解 MappingView ABC
MappingView 容器和 Sized 容器有什么区别?有关如何实现 MappingView 容器的任何示例?
我可能完全误解了 ABC 和文档,但 MappingView 容器是任何继承自 Sized 的容器,对吗?如果是这样,那为什么我的虚拟示例不起作用?
python - 扩展python abc类的类的自动委托
如果某个类扩展了 abc 类(抽象基类),那么除非我定义所有抽象方法,否则我无法实例化它。但通常在实现装饰器模式时,我只想定义一些抽象方法,而其他方法 - 只是委托给装饰对象。这个怎么做?
例如,我想让以下代码工作:
代替
为此,我需要实现delegate
上面示例中的方法。如何实施?也可以考虑为扩展 abc 类的类提供自动委托的一些其他方法。
PS请不要class MyElement(StandardElement)
在这里建议我继承()作为解决方案......上面提供的代码只是一个示例。在我的真实案例中,MyElement 与 StandardElement 相比完全不同。不过,我必须使 MyElement 与 StandardElement 兼容,因为有时有人应该使用 MyElement 而不是 StandardElement。我真的需要在这里实现“有”关系,而不是“是”。
python - 如何在 Python 的抽象基类中加入类型检查
当我定义一个类时,我喜欢包括assert
输入变量的类型检查(使用)。我现在正在定义一个Rule
继承自抽象基类 (ABC)的“专门”类BaseRule
,类似于以下内容:
类函数中的语句assert
确保输入是对象的列表(或其他可迭代的)。但是,对于其他继承自 的类也是如此,因此我想将这个断言合并到不知何故。我该怎么办?__init__
Rule
resources
Resource
BaseRule
abstractproperty