Я хочу перегрузить оператор * в python.В C ++ вы можете перегрузить оператор разыменования, чтобы вы могли создать класс с пользовательским способом ответа на *alpha
.
. Часть этого вопроса состоит в том, что я точно не знаю, и я имею в видуТочно, что делает оператор * (оператор распаковки, как я его называю).
Итак, как я могу его перегрузить или эмулировать его перегрузку.
В конце концов я хочу иметь возможность сделать: *alpha
с пользовательским ответом и возвращаемым значением.
РЕДАКТИРОВАТЬ:
Я нашел решение благодаря комментарию Джо Кингтона.Поскольку *alpha
распаковывает в соответствии с __iter__
, я определил простой класс, от которого можно наследовать, чтобы разрешить это.
Кстати, причина, по которой я хочу это сделать, заключается в том, что я хотел довольноинтерфейс.
class Deref:
def __deref__(self):
pass
def __iter__(self):
yield self.__deref__()
class DerefTest(Deref):
def __deref__(self):
return '123cat'
if __name__ == '__main__':
print(*DerefTest()) # prints '123cat'
В конце концов я просто остановился на использовании другого унарного оператора, потому что реализация, которую я дал, работает не во всех случаях, поэтому я разочарован.