Python превращает привязанный вызов метода в несвязанный - PullRequest
0 голосов
/ 06 ноября 2019

Написание простой программы, которая удаляет пунктуацию из номера телефона и возвращает только цифры в строке:

number = Phone("(223) 456-7890")

print(number.number) ---> должно возвращать «2234567890»

Приведенный ниже код делает это, когда к вызову добавляется '()', в противном случае выдается ошибка Связанного метода (понятно).

Проблема в том, что набор тестов хочет, чтобы он возвратился на number.number (без символов)

Проверял документы на этот и различные ответы SO и попытался self.number = "" в методе init,затем пытаюсь загрузить эту переменную с моими результатами и вернуть ее, но это, похоже, ничего не делает. Любая помощь будет оценена thx

class Phone (object):

def __init__(self, phone_number):
    self.phone_number = phone_number
    #self.number = ""

def number(self):
    punctuation = ['\'', '+', '(', ')', '-', '.',',',' ']
    cpn = list(self.phone_number)
    [cpn.remove(item) for item in punctuation if item in cpn]
    self.number = ''.join(cpn)
    return self.number

1 Ответ

1 голос
/ 06 ноября 2019

Сделайте его свойством :

class Phone (object):

    def __init__(self, phone_number):
        self.phone_number = phone_number
        #self.number = ""

    def get_area_code(self, phone_number):
        punctuation = ['\'', '+', '(', ')', '-', ' ']
        #output = ''
        #for char in phone_number:
        #    if char not in punctuation:
        #        output += char

        return phone_number

    @property
    def number(self):
        punctuation = ['\'', '+', '(', ')', '-', '.',',',' ']
        cpn = [item for item in self.phone_number if item not in punctuation]
        return ''.join(cpn)

number = Phone("(223) 456-7890")
print(number.number) 
# 2234567890

Я изменил конец метода (будут некоторые дополнительные улучшения), используя понимание списка для его побочных эффектовкак вы не рекомендовали, и remove, как вы его использовали, будет удалять только первый экземпляр каждого символа пунктуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...