Я хочу дать класс, я сделал все методы, что строка имеет (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
(или любой другой встроенный в этом отношении)? Я дал это или есть еще лучший способ, о котором я не думаю.
Спасибо.
Вы должны, как правило, не относиться к '__builtins__'. Просто используйте 'str' напрямую. Но есть ли здесь настоящая проблема? –
@MartijnPieters - Нет, нет ничего плохого в использовании 'str' напрямую. Я просто хотел уточнить, что лучше всего унаследовать от встроенного. Поскольку есть несколько способов сделать то, что я хочу, мне нравится выбирать лучшее. – iCodez