0

我想给一个类,我做了一个字符串所具有的所有方法(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总结一下,我的问题是:从(或任何其他内置的)继承的最佳方式是什么?我给了它还是有更好的方法我没有想到。

谢谢。

4

2 回答 2

1

永远不要碰__builtins__这是一个实现细节。引用令人困惑的类似名称__builtin__模块的文档:

CPython 实现细节:大多数模块的名称__builtins__(注意“s”)作为其全局变量的一部分。的值__builtins__通常是此模块或此模块的dict属性的值。由于这是一个实现细节,因此 Python 的替代实现可能不会使用它。

只是继承自str. 没有理由不这样做;它不是更快或更清晰,也不是使用其他名称。

于 2013-08-09T15:00:35.567 回答
1
class MyClass(str):

刚刚好。我不认为这有什么问题。你为什么要通过使用builtin和所有...

于 2013-08-09T14:54:35.723 回答