Seite 1 von 1
Klasse (nicht als Instanz) übergeben
Verfasst: Dienstag 11. Januar 2022, 11:17
von Metatron
Hallo,
ist es möglich an eine Methode eine Klasse zu übergeben, also nicht als Instnaz?
Ich würde mir in der Methode von dieser Klasse mehrere Instnazen mit verschiedenen Parametern des Konstrutors erzeugen.
Vereinfacht dargestellt so:
Code: Alles auswählen
def Methdoe(self, foo):
f = []
for i in range(0, 100):
f.append(foo(i))
return f
Re: Klasse (nicht als Instanz) übergeben
Verfasst: Dienstag 11. Januar 2022, 11:21
von pillmuncher
@Metatron
Code: Alles auswählen
class Foo:
def __init__(self, number):
self.number = number
x.Methdoe(Foo)
Re: Klasse (nicht als Instanz) übergeben
Verfasst: Dienstag 11. Januar 2022, 11:34
von Metatron
Für die Klasse foo möchte ich jedoch verschiednen Klassen an die Methode übergeben.
Code: Alles auswählen
class A:
...
class B:
...
class C:
...
x = Methode(A)
x = Methode(B)
x = Methode(C)
Re: Klasse (nicht als Instanz) übergeben
Verfasst: Dienstag 11. Januar 2022, 11:41
von Sirius3
Dann mach das doch.
Re: Klasse (nicht als Instanz) übergeben
Verfasst: Dienstag 11. Januar 2022, 12:09
von __deets__
In dem Fall ist das keine Methode, weil eine Methode zwangsweise an eine bestimmte Klasse gebunden ist. Das ist dann eine stinknormale Funktion.
Und an eine Funktion kann man auch einfach eine Klasse uebergeben, und wenn deren Konstruktor (von A, B , C) die gleichen Argumente erwarten, dann kannst du den auch einfach aufrufen.
Code: Alles auswählen
def class_factory(klass):
return [klass(i) for i in range(19)]
Re: Klasse (nicht als Instanz) übergeben
Verfasst: Dienstag 11. Januar 2022, 12:26
von Metatron
es ist schon eine Methode da diese zu einer Klasse gehört, ist hier jedoch nicht dargestellt.
danke ich werde es ausprobieren, manchmal ist python so symple wie man sich das vorstellt...
danke

Re: Klasse (nicht als Instanz) übergeben
Verfasst: Mittwoch 12. Januar 2022, 15:03
von imonbln
Wenn deine Python Version hinreichend neu ist ( >= 3.8 ) klingt das für mich wie ein use case für Protocol. Wie es zum Beispiel hier beschrieben ist.
https://andrewbrookins.com/technology/b ... l-classes/