Dynamisch Methoden einer Klasse referenzieren
Verfasst: Donnerstag 10. Mai 2012, 17:19
Hallo,
schöne Grüße erst einmal an das Forum. Ich bin recht neu in der Python-Programmierung und habe in der nächsten Zeit sicherlich etliche Fragen. Vielen Dank also schon einmal vorweg für alle eure Antworten.
Ich versuche aktuell ein Messprogramm für unser Labor zu schreiben. Jedes Messgerät soll als Objekt angelegt werden. Die Methoden des Objekts repräsentieren dann Kanäle des Messgeräts.
Ich möchte mein Vorhaben stark vereinfacht anhand eines Voltmeters erklären. Das Voltmeter besitzt z.B zwei Kanäle um Spannungen zu messen. Je nach Experiment können dieses Spannungen aber eine andere Bedeutung haben, mal repräsentieren sie eine Temperatur oder ein anderes mal die Stärke eines Magnetfeldes. Der Benutzer soll nun in der Lange sein diesem Kanal einen physikalisch sinnvollen Namen zu geben und darüber zugreifen zu können.
Was ich nun wissen möchte ist, wie ich dieses am geschicktesten realisiere. Hier mal was ich mir gedacht habe und was auch funktioniert.
Da dieses einen sehr wichtiger Teil des Programms ausmacht, möchte ich gerne vorweg sicherstellen den richtigen Weg zu gehen. Allerdings bin ich mir nicht sicher ob dieses der richtige Weg ist um Methoden zu referenzieren.
Ich würde mich sehr freuen, wenn mir jemand sagen könnte ob ich die Sache richtig oder falsch angehe. Lasst mich aber auch bitte wissen, wenn ihr meine Frage nicht versteht.
Vielen Dank schon einmal für alle Antworten.
schöne Grüße erst einmal an das Forum. Ich bin recht neu in der Python-Programmierung und habe in der nächsten Zeit sicherlich etliche Fragen. Vielen Dank also schon einmal vorweg für alle eure Antworten.
Ich versuche aktuell ein Messprogramm für unser Labor zu schreiben. Jedes Messgerät soll als Objekt angelegt werden. Die Methoden des Objekts repräsentieren dann Kanäle des Messgeräts.
Ich möchte mein Vorhaben stark vereinfacht anhand eines Voltmeters erklären. Das Voltmeter besitzt z.B zwei Kanäle um Spannungen zu messen. Je nach Experiment können dieses Spannungen aber eine andere Bedeutung haben, mal repräsentieren sie eine Temperatur oder ein anderes mal die Stärke eines Magnetfeldes. Der Benutzer soll nun in der Lange sein diesem Kanal einen physikalisch sinnvollen Namen zu geben und darüber zugreifen zu können.
Was ich nun wissen möchte ist, wie ich dieses am geschicktesten realisiere. Hier mal was ich mir gedacht habe und was auch funktioniert.
Code: Alles auswählen
class voltmeter(object):
def __init__(self, name1, name2):
self.__channels = {name1 : self.channel01,
name2 : self.channel02}
def readchannel(self, name):
channelreference = self.__channels[name]
return channelreference()
def channel01(self):
return "Spannungswert 01"
def channel02(self):
return "Spannungswert 02"
FooVolt = voltmeter('magnetfeld', 'temperatur')
print FooVolt.readchannel('magnetfeld')
print FooVolt.readchannel('temperatur')
Code: Alles auswählen
Ausgabe:
# Spannungswert 01
# Spannungswert 02
Ich würde mich sehr freuen, wenn mir jemand sagen könnte ob ich die Sache richtig oder falsch angehe. Lasst mich aber auch bitte wissen, wenn ihr meine Frage nicht versteht.
Vielen Dank schon einmal für alle Antworten.