Zastanawiam się, jak dobrze postępować, jeśli chciałbym przedefiniować członków poprzedniej zdefiniowanej klasy w ipython. powiedzieć: Mam zdefiniowane intro klasy jak poniżej, a później chcę przedefiniować część definicji funkcji _print_api. Jakikolwiek sposób to zrobić bez przepisywania go.Dobry sposób na edycję poprzedniej zdefiniowanej klasy w ipython
class intro(object):
def _print_api(self,obj):
def _print(key):
if key.startswith('_'):
return ''
value = getattr(obj,key)
if not hasattr(value,im_func):
doc = type(valuee).__name__
else:
if value.__doc__ is None:
doc = 'no docstring'
else:
doc = value.__doc__
return ' %s :%s' %(key,doc)
res = [_print(element) for element in dir(obj)]
return '\n'.join([element for element in res if element != ''])
def __get__(self,instance,klass):
if instance is not None:
return self._print(instance)
else:
return self._print_api(klass)
Aby otrzymać zaktualizowany kod, należy użyć funkcji 'reload (nazwa_modułu)' - ponowne uruchomienie 'import' nie przyniesie żadnego efektu (uważam, że powodem jest to, że jeśli duży program importuje to samo w wielu możliwych lokalizacjach nie wiąże się to z dużą karą za wyniki). –