Ich bin mir nicht sicher, ob ich die richtige Terminologie bin mit, aber hier ist mein Code:selbstbeziehende Variablen während der Instanziierung einer Klasse übergeben
class Candidate(object):
def __init__(self, party_code, state, age=random.randint(35, 70),
social_index=(1 if party_code == 'dem' else -1 if party_code == 'rep' else 0),
econ_index=(-1 if party_code == 'dem' else 1 if party_code == 'rep' else 0)):
self.state = state
self.party_code = party_code
self.age = age
self.social_index = social_index
self.econ_index = econ_index
Ich mag wäre in der Lage sein party_code verwenden um zu bestimmen, was die Anfangswerte von social_index und econ_index sein werden, aber das ist nicht mit der Art, wie ich es derzeit eingerichtet habe, erlaubt. Gibt es eine alternative Möglichkeit, die Keyword-Variable beim Erstellen dieser Klasse dynamisch festzulegen?
der Standardwert zur Definitionszeit bestimmt wird (wenn der Klassenblock ausführt) nicht wenn die Funktion ausgeführt wird, lege einfach den Code, der ihren Wert bestimmt, in den Funktionskörper. –
Beachten Sie, dass das der Punkt ist, an dem eine "__init__" -Methode verwendet wird, um Code zum Erstellen des Objekts auszuführen. Ihr Alter wird immer auf die gleiche Zahl zurückgesetzt, die nur einmal zur Definitionszeit und nicht einmal pro Instanz generiert wurde. –
Sie sagen also, wenn ich die Klasse 2 separate Zeiten instanziieren, wird der Alterswert immer gleich sein? Gibt es eine Möglichkeit, bei jeder Instanziierung ein zufälliges Alter zu erreichen? – Phil