используя приватный метод в вашем конструкторе python - PullRequest
0 голосов
/ 11 апреля 2020

Я новичок в OOP в Python, и мне нравится, как это работает. Так что я много экспериментирую с этим. Я пытаюсь создать Freelancer class, который позволяет пользователям регистрироваться на платформе с username, но проверяет, что username не существует в базе данных.

Вот мой рабочий подход:

class Freelancer:
    """Leaving this blank for now while I explore the functionality """
    number_of_sales = 0
    available_niches = ["Graphic design", "Art", "Data Analysis", "Music", "Business", "Writing and Translations"]
    usernames = []

    def __init__(self, username):
        self.username = _check_username(username)

    def _check_username(self, username):
        if self.username in Freelancer.usernames:
            print("This username already exist on our database, consider choosing another one")
        else:
            self.username = username
            Freelancer.usernames.append(self.username)
            print("You have successfully setup a username on our platform")

Тестирование этого класса и метода здесь:

David = Freelancer("dave23")

Дает мне следующую ошибку:

NameError: name '_check_username' is not defined

Я бы хотел, чтобы способ применения private methods в моем class initialization. Это возможно?

1 Ответ

2 голосов
/ 11 апреля 2020

Вы пропустили себя, прежде чем вызывать закрытый метод.

def __init__(self, username):
    self.username = self._check_username(username)

Если он по-прежнему выдает ошибку, например: у объекта 'Freelancer' нет атрибута 'username', определите переменную username

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