Die Suche ergab 12 Treffer

von Red Rooster
Donnerstag 13. Dezember 2012, 16:58
Forum: Python mit anderen Sprachen verwenden
Thema: win32com und Threads
Antworten: 1
Zugriffe: 3465

win32com und Threads

Ich habe ein Problem mit threading und win32com. Ich habe eine kleine Python-Funktion geschrieben, die einwandfrei läuft, solange man diese aus einer einfachen Applikation (ohne threading) aufruft.


def add(x, y):
access = win32com.client.Dispatch('Access.Application')
access.OpenCurrentDatabase ...
von Red Rooster
Freitag 9. November 2012, 17:56
Forum: Allgemeine Fragen
Thema: Klasse dynamisch subklassieren...
Antworten: 19
Zugriffe: 2009

Re: Klasse dynamisch subklassieren...

Sagt doch die Fehlermeldung aus: self.db existiert in Database.select nicht, also wird __getattr__ aufgerufen. Das versucht auf dem Objekt self.db, welches es natürlich nicht gibt, etwas zu machen. Also wird __getattr__ aufgerufen um self.db zu finden. Den Rest kannst du dir ja vorstellen.

Danke ...
von Red Rooster
Freitag 9. November 2012, 17:35
Forum: Allgemeine Fragen
Thema: Klasse dynamisch subklassieren...
Antworten: 19
Zugriffe: 2009

Re: Klasse dynamisch subklassieren...

@Red Rooster: Ich sehe nicht warum Du keinen Proxy daraus machen können solltest. Das Entwurfsmuster zeichnet sich ja dadurch aus, dass es nach aussen wie der Datentyp verhält, für den es als Stellvertreter und Vermittler steht. Gerade bei dynamischer Typisierung geht so etwas doch sehr problemlos ...
von Red Rooster
Freitag 9. November 2012, 16:53
Forum: Allgemeine Fragen
Thema: Klasse dynamisch subklassieren...
Antworten: 19
Zugriffe: 2009

Re: Klasse dynamisch subklassieren...

@Red Rooster: Ich sehe nicht warum Du keinen Proxy daraus machen können solltest. Das Entwurfsmuster zeichnet sich ja dadurch aus, dass es nach aussen wie der Datentyp verhält, für den es als Stellvertreter und Vermittler steht. Gerade bei dynamischer Typisierung geht so etwas doch sehr problemlos ...
von Red Rooster
Freitag 9. November 2012, 16:04
Forum: Allgemeine Fragen
Thema: Klasse dynamisch subklassieren...
Antworten: 19
Zugriffe: 2009

Re: Klasse dynamisch subklassieren...

@Red Rooster: Mir ist schon klar was Du willst, das ist aber nicht so einfach möglich, weil es eben der vorgesehenen Klassenhierarchie zuwider läuft.

Den Begriff „überschreiben” solltest Du hier vielleicht nicht verwenden, weil da nichts dergleichen passiert. Du rufst den Konstruktor von `my_db ...
von Red Rooster
Freitag 9. November 2012, 14:14
Forum: Allgemeine Fragen
Thema: Klasse dynamisch subklassieren...
Antworten: 19
Zugriffe: 2009

Re: Klasse dynamisch subklassieren...

@Red Rooster: Du versuchst da etwas was IMHO mit einer hierarchischen Klassenhierarchie so nicht geht. Was Du willst ist ja nicht von `Database` abzuleiten, sondern von mehreren Unterklassen davon quasi gleichzeitig abzuleiten. Das ist nicht vorgesehen.

Du solltest besser aus Deiner `MyDB` einen ...
von Red Rooster
Freitag 9. November 2012, 13:36
Forum: Allgemeine Fragen
Thema: Klasse dynamisch subklassieren...
Antworten: 19
Zugriffe: 2009

Re: Klasse dynamisch subklassieren...

Du musst in der __init__-Methode von my_db auch die __init__ von Database aufrufen.

Edit: In diesem Fall liegt es natürlich daran, dass du für die Engine "pg" eine Instanz von PostgreSQL erstellst, da wird natürlich die init von my_db aufgerufen.

Die __init__ von my_db wird nicht aufgerufen ...
von Red Rooster
Freitag 9. November 2012, 12:43
Forum: Allgemeine Fragen
Thema: Klasse dynamisch subklassieren...
Antworten: 19
Zugriffe: 2009

Re: Klasse dynamisch subklassieren...

Aber wie dann?
So vielleicht:
class Database(object):
def __new__(cls, engine):
if engine == 'mysql':
cls = MySQL
elif engine == 'pg':
cls = PostgreSQL
else:
raise Exception('Unsupported engine')
return object.__new__(cls)

class PostgreSQL(Database):
def select(self):
print('select for ...
von Red Rooster
Donnerstag 8. November 2012, 19:14
Forum: Allgemeine Fragen
Thema: Klasse dynamisch subklassieren...
Antworten: 19
Zugriffe: 2009

Re: Klasse dynamisch subklassieren...


Danke für die prompte Antwort! Ja, ich glaube das ist genau was ich gesucht habe. Kann gar nicht glauben, daß es so einfach ist :o
Ohne den genauen Hintergrund zu kennen würde ich ja sagen, Du suchst einen ORM . Da böte sich im Python Umfeld SQLAlchemy an - es sein denn, Du willst unbedingt ...
von Red Rooster
Donnerstag 8. November 2012, 14:37
Forum: Allgemeine Fragen
Thema: Klasse dynamisch subklassieren...
Antworten: 19
Zugriffe: 2009

Re: Klasse dynamisch subklassieren...

Aber wie dann?
So vielleicht:
class Database(object):
def __new__(cls, engine):
if engine == 'mysql':
cls = MySQL
elif engine == 'pg':
cls = PostgreSQL
else:
raise Exception('Unsupported engine')
return object.__new__(cls)

class PostgreSQL(Database):
def select(self):
print('select for ...
von Red Rooster
Donnerstag 8. November 2012, 14:13
Forum: Allgemeine Fragen
Thema: Klasse dynamisch subklassieren...
Antworten: 19
Zugriffe: 2009

Re: Klasse dynamisch subklassieren...

Willkommen im Forum!

Vergiss die Vererbung und benutze eine Factory Funktion:

def create_db_connection(self, engine):
return {'postgresql': PostgreSQL,
'mysql': MySQL}[engine]()

Du kannst natuerlich auch bei deiner `if`-Kaskade bleiben.

Darauf bin ich auch schon gekommen. Allerdings muß ...
von Red Rooster
Donnerstag 8. November 2012, 13:42
Forum: Allgemeine Fragen
Thema: Klasse dynamisch subklassieren...
Antworten: 19
Zugriffe: 2009

Klasse dynamisch subklassieren...

Die Situation: Ich habe eine Klasse, die beim __init__ feststellt, welche andere Klasse subklassiert werden soll. So wie ich es versucht habe, geht es natürlich nicht. Aber wie dann?


class Database(object):
def __init__(self, engine):
if engine == 'postgresql':
self = MySQL()
if engine ...