Verfasst: Freitag 11. Mai 2007, 08:31
Nein das geht leider nicht und wird auch von den Django-Entwicklern nicht empfohlen, da in der __init__ soviel Magic passiert das es dann nicht mehr geht.
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
def __get_uptime(self):
"""return uptime in a human readable format"""
if not tmp:
return "00:00:00"
div, mod = divmod(tmp, 8640000)
div, mod = divmod(mod, 360000)
uptime_str = '%d:' % div
div, mod = divmod(mod, 6000)
uptime_str += '%02d:' % div
div, mod = divmod(mod, 100)
uptime_str += '%02d' % div
return uptime_str
uptime = property(__get_uptime)
Code: Alles auswählen
146 # tmp = int(snmp_val(_defaultcfg.ip, _defaultcfg.snmp_community,
147 # _defaultcfg.uptime_mib.oid + str(self.cur_id) + ".0", 1))
--> 148 if not tmp:
149 return "00:00:00"
150 div, mod = divmod(tmp, 8640000)
<type 'exceptions.NameError'>: global name 'tmp' is not defined
Hm. Da ist wohl "removing magic" noch nicht so ganz durchgedrungenTheGrudge hat geschrieben:Nein das geht leider nicht und wird auch von den Django-Entwicklern nicht empfohlen, da in der __init__ soviel Magic passiert das es dann nicht mehr geht.
Kannst du nicht. Es kommt ein NameError.TheGrudge hat geschrieben:Ich kann doch sonst auch einfach sagen, gucke ob Variable da (if tmp) und dann sagt Python immer False falls nicht vorhanden.
Code: Alles auswählen
if tmp: pass
Man könnte das vielleicht so machen:NameError: name 'tmp' is not defined
Code: Alles auswählen
if "tmp" in locals(): pass
Code: Alles auswählen
#~ tmp = True
if locals().get("tmp", None):
print "OK"
Code: Alles auswählen
tmp = irgendwas()
if tmp:
mach_das_hier()
Doch. Aber nicht mit mangled Names:TheGrudge hat geschrieben:Nochmal eine Frage, wenn ich den Code mit hasattr ausstatte, dann funktioniert das nicht. Kann es sein das man hasattr nicht mit self benutzen kann?