Nehmen wir an, ich habe viele Funktionen in alotoffunc.py
, die von mehr als 1 Objekttyp verwendet wird.Erstellen von Klassen mit vielen importierten Funktionen hier und da
Sagen wir ObjectI
und ObjectII
und ObjectXI
alle einige Funktionen in alotoffunc.py
verwendet. Und jedes Objekt verwendete verschiedene Funktionen, aber alle Objekte haben die Variable object.table
.
alotoffunc.py
:
def abc(obj, x):
return obj.table(x) * 2
def efg(obj, x):
return obj.table(x) * obj.table(x)
def hij(obj, x, y):
return obj.table(x) * obj.table(y)
def klm(obj, x, y):
return obj.table(x) *2 - obj.table(y)
Und dann importiere ich die Funktionen und überlasten sie:
import alotoffunc
class ObjectI:
def abc(self, x):
return alotoffunc.abc(self, x)
def efg(self, x):
return alotoffunc.efg(self, x)
class ObjectII:
def efg(self, x):
return alotoffunc.efg(self, x)
def klm(self, x, y):
return alotoffunc.klm(self, x, y)
class ObjectXI:
def abc(self, x):
return alotoffunc.abc(self, x)
def klm(self, x, y):
return alotoffunc.klm(self, x, y)
Es sieht wie ein großes Durcheinander jetzt, wie soll ich mich über meine Objektklasse zu bauen und organisieren meine alotoffunc.py
?
Es sieht nicht wie ein Chaos für mich aus. Wenn es Sie stört, können Sie eine Basisklasse haben, die alle Methoden implementiert und dann die unnötigen überschreibt, um einen "NotImplementedError" in den Unterklassen zu erzeugen oder Methodengruppen zu Mixins zu konsolidieren. – Selcuk
Ich stimme Selcuk zu. Was du getan hast, sieht vernünftig aus. Subclassing kann die Menge an Code leicht reduzieren, kann aber auch die Übersichtlichkeit beeinträchtigen, da Sie nicht gewünschte Funktionen überschreiben würden, anstatt Funktionen hinzuzufügen, die Sie möchten. – Vorticity
mixins hört sich gut an, aber die Kontrolle von Polymorphie könnte mir später Kopfschmerzen bereiten, irgendwelche Hinweise, wie ich damit umgehen soll, nachdem ich Mixins benutzt habe? – alvas