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/