Python et Django, je suis dans le premier mois. L'historique des rails est d'environ 2 ans. Pourquoi le débogage de Python est-il si difficile à voir? Surtout modèle. L'affichage suivant. Qui gagnerait à voir cela?
>>> class Foo(object):
pass
>>>
>>> repr(Foo())
'<__main__.Foo object at 0x02A74E50>'
Cherchez la mer sur le net pour voir s'il y a une manière différente, et utilisez repr pour la voir magnifiquement! Hourra! Cela vous libère de la douleur!
def __repr__(self):
return '<Stats: description={0.description!r}, mystat={0.mystat!r}>'.format(self)
... qu'est-ce que c'est ennuyeux.
Vous devez écrire à chaque classe. Est-il possible d'ajouter une bibliothèque one-shot ou quelque chose? ?? Je pense.
Référence: http://stackoverflow.com/a/15929677/5114776
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
if __debug__:
# monkey-patch in useful repr() for all objects, but only in dev
def tablerepr(self):
return "<{}({})>".format(
self.__class__.__name__,
', '.join(
["{}={}".format(k, repr(self.__dict__[k]))
for k in sorted(self.__dict__.keys())
if k[0] != '_']
)
)
Base.__repr__ = tablerepr
>>> session.query(FooBar).get(1)
<FooBar(id=1, foo='bar', comments='foobar', hoge=1231242342341342342, fuga=datetime(2015, 5, 5, 5, 5, 5), tiger='waearsdtdygfyfguiohjohjohpp'>
Cependant, il est encore difficile de voir avec cette seule référence. Je ne suis pas une machine! Un format facile à voir pour les gens! Sinon, ça n'a pas de sens!
Base = declarative_base()
if __debug__:
# monkey-patch in useful repr() for all objects, but only in dev
def tab_char(max_length, target_lenght):
tab = []
tab_char_count = 4
tab_count = (max_length/tab_char_count - target_lenght/tab_char_count) + 1
for i in range(tab_count):
tab.append('\t')
return "".join(tab)
def table_repr(self):
max_length = max(map(lambda n: len(n), self.__dict__.keys()))
return "\n<{}({})>".format(
self.__class__.__name__,
', '.join(
["\n\t{}{}= {}".format(k, tab_char(max_length, len(k)), repr(self.__dict__[k]))
for k in sorted(self.__dict__.keys())
if k[0] != '_']
)
)
Base.__repr__ = table_repr
>>> session.query(FooBar).get(1)
<FooBar(
id = 1
fooooooooo = 'bar',
comments = 'foobar',
hoge = 1231242342341342342,
fuga = datetime(2015, 5, 5, 5, 5, 5),
tiger = 'waearsdtdygfyfguiohjohjohpp'>
Parfait.