Другие предложили строки документа, но строка документа, вероятно, должна более подробно описывать, что делает функция. Если вам нужен короткий атрибут, описывающий функцию, один из вариантов ниже может быть тем, что вы ищете:
Вариант 1
Вы говорите, что хотите изменить описание объекта по умолчанию?
>>> def f1(): pass
...
>>> def f2(): pass
...
>>> L = [f1,f2]
>>> print L
[<function f1 at 0x00AA72F0>, <function f2 at 0x00AA73B0>]
Если вы хотите настроить описание функций в списке выше, используйте decorator . Декоратор ниже оборачивает каждую функцию, декорированную в объект, который действует как исходная функция, но имеет собственное представление:
def doc(s):
class __doc(object):
def __init__(self,f):
self.func = f
self.desc = s
def __call__(self,*args,**kwargs):
return self.func(*args,**kwargs)
def __repr__(self):
return '<function {0} "{1}">'.format(self.func.func_name,self.desc)
return __doc
@doc('a+b')
def sum(a,b):
return a + b
@doc('a-b')
def diff(a,b):
return a - b
L = [sum,diff]
print L
for f in L:
print f(5,3)
выход
[<function sum "a+b">, <function diff "a-b">]
8
2
Вариант 2
Кроме того, вы можете хранить атрибуты в своих функциях и отображать их по мере необходимости:
def sum(a,b):
return a + b
sum.desc = 'a+b'
def diff(a,b):
return a-b
diff.desc = 'a-b'
L = [sum,diff]
for f in L:
print f.desc,f(8,3)
выход
a+b 11
a-b 5
Вариант 3
Вы также можете сделать вариант 2 с декоратором:
def doc(s):
def __doc(f):
f.desc = s
return f
return __doc
@doc('a+b')
def sum2(a,b):
return a + b
@doc('a-b')
def diff2(a,b):
return a - b
L = [sum2,diff2]
for f in L:
print f.desc,f(8,3)
выход
a+b 11
a-b 5