В настоящее время я пытаюсь перенести некоторый код Python 2 в код, совместимый с Python 2/3, и у меня возникают проблемы с этим конкретным классом:
class FileID(str):
def __new__(cls, fileid, *args):
return super(FileID, cls).__new__(cls, fileid)
def __init__(self, fileid, size):
super(FileID, self).__init__(fileid)
self.size = size
x = FileID('a', 1)
print(x) # prints: a
print(x.size) # prints: 1
В Python 2.7 это работает просто отлично.
Для переноса я использовал from builtins import super
.
Для Python 3.6 я удаляю избыточные внутренние супер-аргументы, но кажется, что оба метода __new__
блокируются,а также при передаче аргумента int
(говоря, что это должно быть str
).
Есть ли способ создать этот класс как py2 / 3 (наследует str
и может принимать аргументы типаint) что эквивалентно?
Заранее спасибо!