2016-11-23 2 views
3

Ich habe diese Klasse und diese Funktionen unten. Gibt es eine Möglichkeit, den Rückgabewert innerhalb new_number der Parameternummer im ersten Mädchenkonstruktor zuzuordnen?Zuweisen einer Funktion als anderer Funktionsparameter

class girl(person): 
    def __init__(self, number, interest): 
     self.number = number 
     self.interest = interest 
     super().__init__() 
    def new_number(self): 
     n = '0000000000' 
     while '9' in n[3:6] or n[3:6]=='000' or n[6]==n[7]==n[8]==n[9]: 
      n = str(random.randint(10**9, 10**10-1)) 
     return n[:3] + '-' + n[3:6] + '-' + n[6:] 
+0

Funktion 'new_number' muss in' Girl' Klasse sein? – ettanany

+0

Äh, ja, da ist - indem man es anruft. –

+0

ahhhh ok gracias –

Antwort

5

Wenn Sie vorhaben, zuweisen es immer self.number dann akzeptieren es nicht einmal als Parameter. rufen sie einfach an und ordnen Sie:

class girl(person): 
    def __init__(self, interest): 
     self.number = self.new_number() 
     self.interest = interest 
     super().__init__() 

    def new_number(self): 
     n = '0000000000' 
     while '9' in n[3:6] or n[3:6]=='000' or n[6]==n[7]==n[8]==n[9]: 
      n = str(random.randint(10**9, 10**10-1)) 
     return n[:3] + '-' + n[3:6] + '-' + n[6:] 

Beachten Sie, dass new_number kann außerhalb der Klasse verschoben werden, da es nichts damit zu tun hat, oder es kann statisch erfolgen.

+0

So verwenden Sie es nicht als Parameter, rufen Sie es einfach, wenn es benötigt wird. Erwischt! –

0

Sie können zuweisen nur die Anzahl der self.number:

class girl(person): 
    def __init__(self, number, interest): 
     self.number = number 
     self.interest = interest 
     super().__init__() 
    def new_number(self): 
     n = '0000000000' 
     while '9' in n[3:6] or n[3:6]=='000' or n[6]==n[7]==n[8]==n[9]: 
      n = str(random.randint(10**9, 10**10-1)) 
    self.number = n[:3] + '-' + n[3:6] + '-' + n[6:] # Assign it here 

Beachten Sie, dass in Python, die variablen self steht für das Objekt selbst, so dass Sie es direkt in Ihrer Klasse Funktionen manipulieren kann.

Sie können diese Zuordnung oder Initialisierung tun wie diese self.propertyA = someCalculation()

+0

Wow-Klassen sind in Python viel freundlicher als in C++ –

1

Versuchen arbeiten sollte. Sie müssen die Nummer nicht weitergeben, da Sie die new_number-Methode aufrufen werden.

class Girl(): 
    def __init__(self, interest=0): 
     self.number = self.new_number() 
     self.interest = interest 
     super().__init__() 
    def new_number(self): 
     n = '0000000000' 
     while '9' in n[3:6] or n[3:6]=='000' or n[6]==n[7]==n[8]==n[9]: 
      n = str(random.randint(10**9, 10**10-1)) 
     num_from_new_number = n[:3] + '-' + n[3:6] + '-' + n[6:] 
     return num_from_new_number 
Verwandte Themen