2016-11-23 4 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 тогда даже не принимать его в качестве параметра. Просто назовите его и назначить его:

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

Обратите внимание, что new_number может быть перемещен за пределами класса, поскольку это не имеет ничего общего с ним, или он может быть статичным.

+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.

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 
Смежные вопросы