我想给一个类,我创建了一个字符串所有的方法(replace
,isupper
等。)
下面是一些示例代码:
>>> class MyClass(str):
... def __init__(self, string):
... self.string = string
... def __str__(self):
... return self.string
...
>>> MyClass("aaa").replace("a", "$")
'$$$'
>>>
这完全符合我的要求。但是,我对如何继承str
感到困惑。我可以像上面那样做,或者:
class MyClass(__builtins__.str):
...
甚至:
import types
class MyClass(types.__builtins__["str"]):
总结一下,我的问题是:从str
(或任何其他内置事件)继承的最佳方式是什么?我有没有给它,或者有更好的方式我没想到。
感谢。
答案 0 :(得分:1)
class MyClass(str):
很好。我不认为这有问题。为什么要使用builtin
和所有...
答案 1 :(得分:1)
永远不要触摸__builtins__
。这是一个实施细节。引用容易混淆的同名__builtin__
模块的文档:
CPython实现细节:大多数模块的名称
__builtins__
(注意's')作为其全局变量的一部分提供。__builtins__
的值通常是此模块或此模块的 dict 属性的值。由于这是一个实现细节,因此Python的替代实现可能不会使用它。
只需继承str
。没有理由不这样做;它不是更快或更清楚,或者使用其他名称的任何东西。