Выполнение этого выражения дает что-то вроде: "<reversed object at 0x10b0b2dd0>"
Предполагаю, что в старых версиях интерпретатора все работало верно. А возможно, автор использовал такую запись как псевдокод для наглядности. Попрошу знатаков разъяснить.
def counter(func):
"""
Декоратор, считающий и выводящий количество вызовов
декорируемой функции.
"""
counter.count[func.__name__] = 0
def wrapper(*args, **kwargs):
counter.count[func.__name__] += 1
res = func(*args, **kwargs)
print "{0} была вызвана: {1}x".format(func.__name__, counter.count[func.__name__])
return res
return wrapper
Похоже, не хватает строки после декоратора
counter.count = {}
***
Посмотрел на StackOverflow. Ответ исправили, и получилось изящней:
def counter(func):
"""
A decorator that counts and prints the number of times a function has been executed
"""
def wrapper(*args, **kwargs):
wrapper.count = wrapper.count + 1
res = func(*args, **kwargs)
print "{0} has been used: {1}x".format(func.__name__, wrapper.count)
return res
wrapper.count = 0
return wrapper
> Например, я был бы очень рад такому видеоклипу на первом курсе :)
Все-таки хорошо, что я начал знакомство с компьютерными сетями из книг Таненбаума и Олифера, а не с этого ролика :)
Выполнение этого выражения дает что-то вроде: "<reversed object at 0x10b0b2dd0>"
Предполагаю, что в старых версиях интерпретатора все работало верно. А возможно, автор использовал такую запись как псевдокод для наглядности. Попрошу знатаков разъяснить.
Возможные решения:
Похоже, не хватает строки после декоратора
***
Посмотрел на StackOverflow. Ответ исправили, и получилось изящней:
kanemra [at] gmail.com
Заранее большое спасибо!
Все-таки хорошо, что я начал знакомство с компьютерными сетями из книг Таненбаума и Олифера, а не с этого ролика :)
А много ли пользы от таких топиков для хабрасообщества, alizar?