Klasse (nicht als Instanz) übergeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Metatron
User
Beiträge: 42
Registriert: Donnerstag 10. Mai 2018, 08:35

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
Benutzeravatar
pillmuncher
User
Beiträge: 1527
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

@Metatron

Code: Alles auswählen

class Foo:
    def __init__(self, number):
        self.number = number

x.Methdoe(Foo)
In specifications, Murphy's Law supersedes Ohm's.
Metatron
User
Beiträge: 42
Registriert: Donnerstag 10. Mai 2018, 08:35

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)
Sirius3
User
Beiträge: 18222
Registriert: Sonntag 21. Oktober 2012, 17:20

Dann mach das doch.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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)]
Metatron
User
Beiträge: 42
Registriert: Donnerstag 10. Mai 2018, 08:35

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 :)
imonbln
User
Beiträge: 187
Registriert: Freitag 3. Dezember 2021, 17:07

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/
Antworten