问题标签 [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 投票
2 回答
1621 浏览

python - 字符串的ABC?

我最近在集合中发现了抽象基类 (ABC),并且喜欢它们清晰、系统的方法和 Mixin。现在我还想创建自定义字符串 (*),但我找不到字符串的 ABC。

有UserString,但不鼓励UserDict!?从 str 本身派生将没有 Mixins?您将如何在覆盖的方法中访问字符串的“数据”部分?

我在某个地方看到了从 Sequence 和 Hashable 派生的建议,但后来我写不出来if 'test' in my_string:?!

您推荐哪种方法?

(*) 原因是: - 编写以内部定义的方式排序的字符串 - 生成字符串(作为枚举的一部分),当与枚举范围之外的值进行比较时会引发错误

0 投票
2 回答
93126 浏览

python - python @abstractmethod 装饰器

我已经阅读了关于抽象基类的 python 文档:

这里

abc.abstractmethod(function) 指示抽象方法的装饰器。

使用这个装饰器需要类的元类是ABCMeta或派生自它。ABCMeta 除非重写其所有抽象方法和属性,否则无法实例化具有派生元类的类。

这里

您可以将@abstractmethod装饰器应用于必须实现的方法,例如draw();然后,Python 将为未定义该方法的类引发异常。请注意,仅当您实际尝试创建缺少该方法的子类的实例时才会引发异常。

我已经使用此代码进行了测试:

代码很好,所以我不明白。如果我输入c.abstractMethod,我会得到:

我在这里缺少什么?ConcreteClass 必须实现抽象方法,但我也不例外。

0 投票
1 回答
2563 浏览

python - 如何从超类方法调用 python 子类方法?

我有以下类型的超类/子类设置:

我希望 SuperClass init 始终调用尚未实现的 do_something 方法。我正在使用python 2.7。也许 ABC 可以做到这一点,但还有其他方法吗?

谢谢。

0 投票
1 回答
2710 浏览

python - 将 abc 子类化的 django 模型会产生元类冲突

我有一个以下模型和抽象基类

但我收到以下错误。

元类冲突:派生类的元类必须是其所有基类的元类的(非严格)子类

我认为这里的问题是(正如这里描述的http://code.activestate.com/recipes/204197-solving-the-metaclass-conflict/)两个基类有两个不同的元类,所以python无法决定哪个元类用于子对象。

为了解决这个问题,我删除了多重继承并使用以下注册方法来注册子类

但我不太喜欢这种方法,因为它看起来像猴子补丁。

有没有其他方法可以解决这个问题?

我尝试将模型元类显式分配给 Child,但它不起作用。我不是在寻找通过编写代码来解决它的方法。我认为这必须通过改变我的班级结构来解决。

0 投票
3 回答
8661 浏览

python - 从覆盖报告中排除抽象属性

我有一个抽象基类:

但是当我在我的项目上运行nosetests(覆盖范围)时,它抱怨属性def行未经测试。它实际上无法测试(AFAIK),因为抽象类的实例化将导致引发异常。

是否有任何解决方法,或者我只需要接受 < 100% 的测试覆盖率?

当然,我可以删除这种ABCMeta用法并简单地使用基类 raise NotImpementedError,但我更喜欢前一种方法。

0 投票
6 回答
24437 浏览

python - Python - 测试一个抽象基类

我正在寻找抽象基类中定义的测试方法的方法/最佳实践。我能直接想到的一件事是对基类的所有具体子类执行测试,但有时这似乎过分了。

考虑这个例子:

是否可以在bar不进行任何子类化的情况下进行测试?

0 投票
1 回答
553 浏览

android - 暂停在android中的音频播放器中

我有一个严重的问题。我研究了两天,但我无法解决。当我运行我的应用程序时,我收到一个错误。

逻辑猫…………

0 投票
1 回答
516 浏览

python - Python ABC 似乎允许不完整的实现

我正在尝试创建基类并强制所有子类实现它的接口。我abc为此目的使用该模块。

这是基类:

这是孩子:

本次测试:

产生以下结果:

不要抱怨不完整的实施!

所以我的问题是抽象基类是否不是真正抽象的。如果它们不是,那么是否有某种方法可以进行健壮的打字?

注意:我已经命名了示例类PluginBaseCompletePlugin表明我需要确保客户端类实现正确的接口。

我试过派生PluginBaseobject,但这没有区别。我正在使用 Python 2.7.1

任何帮助将不胜感激。

0 投票
0 回答
47 浏览

python - collections.MutableSequence 子类似乎是单例的?

可能的重复:
Python 中的“Least Astonishment”:可变默认参数

玩弄这个答案中找到的代码,我发现了以下奇怪之处。这是我的类声明,一个完全微不足道的 MutableSequence 子类:

现在,奇怪的是:

为什么这些实例似乎共享属性?

0 投票
4 回答
829 浏览

python - 可听写类的 Python 成语?

我想做这样的事情:

有没有更蟒蛇的方式来做到这一点?例如,是否可以重载内置转换dict(...)?请注意,我不一定要返回 的所有成员变量Foo,我宁愿让每个类决定返回什么。

谢谢。