问题标签 [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 - Defining @property
I have problem in defining a getter by using @property
in concrete class. Here is the python code:
Then test the code and get this error:
Basically I intend to set v1
as a read-only attribute.
I am used to using the same name for the attribute and its getter function, but it seems that I cannot do it if the class inherited from an abstract class.
I found a workaround by using different name for the getter function v1
as get_v1
:
Is there a better workaround for this problem?
python - 为什么 bytearray 在 Python 2 中不是序列?
我看到 Python 2 和 3 之间的行为存在奇怪的差异。
在 Python 3 中,事情似乎运行良好:
但不是在 Python 2 中:
在 Python 2.x 和 3.x 的次要版本中,结果似乎是一致的。这是一个已知的错误?这是一个错误吗?这种差异背后有什么逻辑吗?
实际上,我更担心 C API 函数PySequence_Check
正确地将类型对象识别PyByteArray_Type
为公开序列协议,通过查看源代码似乎应该这样做,但是对整个事情的任何见解都是非常受欢迎的。
python-2.7 - 如何隐式使用方法的基本定义
我目前正在为 python 2 开发,我正在尝试使用抽象基类来模拟接口。我有一个接口、该接口的基本实现以及许多扩展基本实现的子类。它看起来像这样:
但是 PyCharm 通知我ConcreteAudit
应该实现所有抽象方法。但是,BaseAudit
(未指定为 abc)已经实现了这些方法,并且ConcreteAudit
是BaseAudit
. 为什么 PyCharm 会警告我?它不应该检测到IAudit
的合同已经通过 执行了BaseAudit
吗?
python - 将单例实现为元类,但用于抽象类
我有一个抽象类,我想为从我的抽象类继承的所有类实现单例模式。我知道我的代码不会工作,因为会有元类属性冲突。任何想法如何解决这个问题?
python - 在 Django 模板中使用 abc.ABC 类对象:为什么 Django 尝试实例化它?
我想在 Django 模板中使用 abc.ABC 抽象类对象(不是实例)。在这些类中,我有几个类方法(使用@classmethod 装饰器定义),我想用它们来显示信息。
当我尝试显示列表对象时:{{ dataset.provided_services }}
我得到一个显示的类对象列表:
但是,如果我尝试遍历此列表:
我收到一条错误消息,告诉我我无法使用抽象方法实例化抽象基类,就好像 django 试图实例化类对象一样……这是正常行为吗?是否可以在 Django 模板中使用类对象而不实例化它们?
PS:我使用的是 Django 1.8.5 和 Python 3.4。
python - ABC的计算成本
我过去使用过 abc,我想再次使用它们,以使用 @abstractmethod 强制执行纯虚拟方法。这是在 Python 前端到用户将经常扩展的 API 的上下文中。
开发一个可靠的综合测试规模对我来说有点太复杂了,而且我一直使用 abc 作为一个黑魔法封闭盒子,所以我不知道抽象和检查摘要的成本在哪里,什么时候它可能会发生,或者成本实际上会是什么样子,或者它会随着什么规模而扩大。
我无法在任何地方找到令人满意的基础机制的完整信息,因此任何关于何时何地发生魔法以及以何种成本发生的指针将不胜感激(导入?实例化?如果实例扩展,则成本翻倍?)
关于用例的一些进一步信息:与以前的用例(对我来说)不同,每个基本对象的实例数量非常有限,并且 abc 测量到没有可感知的开销,这一次它将用于某些东西(节点在一个带有树视图的 DAG),它可以被实例化,然后在适当的位置扩展数百次,并且每个类的虚拟方法的数量可能高达十几个左右。
继承从来不是多重的,而且它通常很浅,最多两三个深,大多数时候只有一个。
Python 2.7 由于第 3 方平台的限制。
c++ - 我可以在抽象基类中定义构造函数吗?
我想用 C++ 编写一个“接口”类,它是一个纯虚拟抽象基类。
我可以在这个接口类中定义构造函数吗?构造函数不能是纯粹的虚函数,但是我怎样才能为接口类定义构造函数呢?
编辑:我需要在这样的接口类中使用虚拟析构函数吗?
perl - 子类使用 MooseX::ABC(抽象基类)实现 MooseX::Interface
我试图强制抽象基类的所有子类实现接口。当我尝试添加with '<interface>'
到 ABC 时,它要求我立即实现所需的方法并sub <method> {}
为每个接口方法添加。
为了说明问题,
有谁知道这样做的方法?或者可以推荐一组不同的模块来完成这个?
谢谢
python - 以与 Python 2.7 和 Python 3.5 兼容的方式使用 abc.ABCMeta
我想创建一个具有abc.ABCMeta
元类并且与 Python 2.7 和 Python 3.5 兼容的类。到目前为止,我只在 2.7 或 3.5 上成功地做到了这一点——但从来没有同时在两个版本上。有人可以帮我一把吗?
蟒蛇 2.7:
蟒蛇 3.5:
测试
如果我们使用合适版本的 Python 解释器(Python 2.7 -> 示例 1,Python 3.5 -> 示例 2)运行以下测试,它在两种情况下都成功:
问题
使用 Python 3.5 运行测试时,没有发生预期的行为(TypeError
实例化时不会引发SomeAbstractClass
):
而使用 Python 2.7 运行测试会引发SyntaxError
:
python - Python中的静态方法类和子类——有更好的设计模式吗?
我正在为金融工具定价,每个金融工具对象都需要一个日计数器作为属性。有 4 种日计数器,它们的两种方法都有不同的实现,year_fraction
并且day_count
. 金融工具的这一天数计数器属性在定价时用于其他类,以了解如何适当地折现曲线等。但是,所有的天数计数方法都是静态的,无非是应用一些公式。
因此,尽管我在网上阅读的所有内容都告诉我不要使用静态方法而只使用模块级函数,但我看不到一种方法可以很好地绕过正确的 DayCounter 而不实现这样的东西
因此,在某个特定工具的定价引擎中,将工具作为参数传递,我可以根据需要使用工具的日计数器属性。
我是否遗漏了 Python 中更惯用/风格上可接受的东西,或者这似乎适合用于仅静态方法的类?
示例:
我有一个 FxPricingEngine 类,它有一个__init__
传递 FxInstrument 和后续underlying_instrument
属性的方法。然后,为了使用Value
我的定价引擎的方法,我需要使用特定日期计数器对曲线进行折扣。我有一个YieldCurve
带有discount
我传递的方法的类,self.underlying_instrument.day_counter.year_fraction
以便我可以应用正确的公式。实际上,这些类所要做的就是为独特的实现提供一些逻辑组织。