Edit: Entschuldigung für die Verwirrung über Eltern/Kind. Ich bin neu in OOP und verwirre meine Begriffe.Referenzieren von Klassenmitgliedern aus Kindklasse
Ich möchte die geeignete Strategie zum Verweis auf Klassenattribute verstehen, die von einer geerbten (Kindklasse) zur Verfügung gestellt werden.
Ich habe einen Fall, in dem ich eine gemeinsame Basisklasse habe, die verwendet wird, und mehrere Elternklassen, von denen die Kindklasse erben kann. Jede untergeordnete Klasse verfügt über dieselben Methoden, aber unterschiedliche Implementierungen. Das Problem, das ich habe, ist, dass ich die Kindklasse brauche, um auf Klassenattribute des Elternteils zu verweisen. Der folgende Code scheint gut zu funktionieren, aber meine IDE (pycharm) beschwert sich über eine nicht aufgelöste Attributreferenz, also frage ich mich, ob dies ein Anti-Pattern ist.
Modul parent1.py:
class Parent(object):
def __init__(self):
pass
def do_something(self):
result = self.instance_id
Modul parent2.py:
class Parent(object):
def __init__(self):
pass
def do_something(self):
result = self.instance_id+1
Modul child.py:
if CONSTANT:
from parent1 import Parent
else:
from parent2 import Parent
class Child(Parent):
def __init__(self, instance_id):
self.instance_id = instance_id
Parent.__init__(self)
In In diesem Fall markiert die pycharm-IDE den Verweis auf self.instance_id in Parent1 und Parent2 als 'Unresolved attribute reference', obwohl der Code funktioniert. Ich habe darüber nachgedacht, dies in jede Elternklasse zu verschieben, aber in Bezug auf instance_id muss sich nichts in der Elternklasse ändern, so dass es überflüssig erscheint, es einmal für jedes Elternteil zu definieren. Also meine Frage ist wie folgt: 1. Ist etwas falsch mit dieser Code-Organisation? 2. Wenn nichts falsch daran ist, wie kann ich die IDE reparieren, um diese Referenz zu lösen?
Ich habe noch nie von einem Elternteil gehört, der von einem Kind erbt. –
Sie sollten weniger verwirrende Namen für die Struktur auswählen, die Sie darstellen möchten. Kindklassen erben von Eltern. – Ryan
Was ist der Zweck von '' Child2''? Es wird nirgendwo in deinem Code referenziert. – Schmuddi