Lets sagen, dass ich 2 Klasse haben, und ich möchte die zweiten Klassen in den First-Class-Attribute kann ich so machen:Summe zwei verschiedene Klassenattribute
class first:
def __init__(self):
self.value_one = 2
self.value_two = 5
self.value_third = 7 #second class don't have that attribute
def sum_class(self, cls):
for attribute in cls.__dict__:
x = getattr(cls, attribute)
y = getattr(self, attribute)
setattr(self, attribute, x+y)
class second:
def __init__(self):
self.value_one = 3
self.value_two = 1
Aber es sieht nicht pythonic ist es besser Weg, es zu tun?
Meine Klassen werden mehr als 10 Attributen, so will ich nicht eins nach dem anderen hinzufügen, die leicht sein könnte, aber massig Code wie:
def sum(self, cls):
self.value_one += cls.value_one
self.value_two += cls.value_two
Auch kann meine dritte Klasse:
class ClassB:
def __init__(self):
self.value_one = 2
self.value_third = 3
ich möchte auch in der Lage, diese Klasse in meine erste Klasse kann
Mögliches Duplikat von [Wie würde ich auf Variablen von einer Klasse zur anderen zugreifen?] (Http://stackoverflow.com/questions/19993795/how-would-i-access-variables-from-one-class-to- ein anderes) – user2925795
Die einfache Lösung ist, eine allgemeine Basisklasse zu haben, die diese zwei Attribute zur Verfügung stellt und "zuerst" als eine Unterklasse hat, die ein neues Attribut hinzufügt.Im Grunde machen Sie 'second' eine Elternklasse von' first' und verschieben Sie die 'sum_class' Methode auf' second'. Ohne ein konkreteres Beispiel ist nicht klar, ob diese Lösung sinnvoll ist oder nicht. – Bakuriu
@ user2925795 Ich suche tatsächlich nach Art von KlasseA .__ dict__ + classB .__ dict__ es ist anders als Sie senden. Es addiert nur einige Attribute Ich möchte alle hinzufügen – ihsancemil