2016-11-23 12 views
3

私はこのクラスと以下の関数を持っています。 new_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)) 
     return n[:3] + '-' + n[3:6] + '-' + n[6:] 
+0

'new_number'関数は' Girl'クラスの中になければなりませんか? – ettanany

+0

ええ、そうです、それを呼び出すことによってあります。 –

+0

ahhhh ok gracias –

答えて

5

常にself.numberに割り当てる場合は、パラメータとして受け入れないでください。単にそれを呼び出すと、それを割り当てます。それはそれとは何の関係も持っていない、またはそれは、静的行うことができるようnew_numberは、クラスの外に移動することができることを

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:] 

注意。

+0

これをパラメータとして使用しないでください。必要なときに呼び出すだけです。ゴッチャ! –

0

あなただけ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 

注意あなたがあなたのクラスの機能でそれを直接操作することができますので、Pythonで、変数は、オブジェクト自体の略selfこと。

あなたはそれが動作するはずこれを試してみてください。このself.propertyA = someCalculation()

+0

WowクラスはPythonではC++よりはるかに使いやすいです –

1

のような割り当てや初期化を行うことができます。 new_numberメソッドを呼び出す予定なので、numberを渡す必要はありません。

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 
関連する問題