python - 字符串的 ABC?

标签 python string abstract-class abc

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

有 UserString,但是 UserDict 却灰心了!?从 str 本身派生不会有 Mixins 吗?您将如何访问重写方法中字符串的“数据”部分?

我在某处看到了从 Sequence 和 Hashable 派生的建议,但后来我无法编写 if 'test' in my_string:?!

您推荐哪种方法?

(*) 原因是: - 编写以内部定义方式排序的字符串 - 制作字符串(作为枚举的一部分),在与枚举范围外的值进行比较时抛出错误

最佳答案

这是史蒂文回答的一个愚蠢但快速的例子。它在 Python 3 中实现(即 Unicode 字符串、不带参数的 super__getitem__ 切片):

class MultiStr(str):
    def __new__(cls, string, multiplier=1, **kwds):
        self = super().__new__(cls, string, **kwds)
        self.multiplier = multiplier
        return self

    def __getitem__(self, index):
        item = super().__getitem__(index)
        return item * self.multiplier

>>> s = MultiStr(b'spam', multiplier=3, encoding='ascii')
>>> s[0]
'sss'
>>> s[:2]
'spspsp'
>>> s[:]
'spamspamspam'

关于python - 字符串的 ABC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7172772/

相关文章:

C++11 字符串赋值运算符

python - python抽象基类是否应该从对象继承

python - 未知维度张量的逐元素乘法

python - 是否可以在另一个函数中访问局部变量?

c - !s || 是什么意思!* 是什么意思? (s 是字符*)

c++ - 为什么抽象类的实现看不到重载的纯虚函数?

java - 如何从Java中的抽象类改变私有(private)字段?

Windows 上的 Python 多处理和网络

python - Pandas 根据另一个数据帧将多个列和行值设置为 nan

Java:将字符串中的所有字符代码移动一个常量值