@mkone112
Начинающий питонист.

Как создать объект который самостоятельно распакуется в нужное число имен?

class Unpacker:
    ...
u = Unpacker()
a, b = u
print(a,b)  # 1, 2
a, b, c = u
print(a,b,c)  # 1, 2, 3
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Никак, слишком много значений для распаковки - это тоже плохо. А узнать количество распаковываемых переменных объект не сможет без анализа кода.

Собственно, главный вопрос тут опять "а зачем тебе такое?"

EDIT: Ну что ж, не говори, что тебя не предупреждали...

# оба модуля - встроенные, а не сторонние
import inspect
import dis

def callee(x):
    our_frame = inspect.currentframe()
    our_caller_frame = our_frame.f_back
    our_caller = our_caller_frame.f_code
    print(f"We are called by {our_caller.co_name}(), at line {our_caller_frame.f_lineno}")
    print("Our caller's code goes as following (byte string):")
    print(our_caller.co_code)
    bytecode = dis.Bytecode(our_caller, first_line=our_caller.co_firstlineno)
    print("Or, in human readable form, its this:")
    print(bytecode.dis())
    return [x*x]


def caller():
    print("Calling callee()")
    y = callee(2)
    print(y)

def other_caller():
    print("Calling callee()")
    z, *_ = callee(3)
    print(z)

caller()
other_caller()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы