type() liefert <type 'instancemethod'>
Verfasst: Dienstag 1. Mai 2007, 19:02
Ich erstelle einen SimpleXMLRPCServer und möchte alle Methoden registrieren, die mit "rp_" (remote procedure) beginnen. Auszug:
Liefert:
Wie kann ich denn rauskriegen, ob das Attribut `getattr(self, "rp_foo")` wirklich eine Methode der Klasse ist und keine Variable? Im Modul `types` finde ich dafür keinen sinnvollen Vergleichswert... weder `types.FunctionType` noch `types.InstanceType` liefert True.
Code: Alles auswählen
def start_server(self):
# Create server.
self.server = SimpleXMLRPCServer.SimpleXMLRPCServer((self.host, self.port))
# Register all methods starting with "rp_".
for attr in dir(self):
if attr.startswith("rp_"):
func = getattr(self, attr)
if type(func) == types.FunctionType:
self.server.register_function(func)
print type(func), types.FunctionType, types.InstanceType
# Start server.
#self.server.serve_forever()
Code: Alles auswählen
<type 'instancemethod'> <type 'function'> <type 'instance'>