Python установить необязательную переменную - PullRequest
0 голосов
/ 06 мая 2020

Для класса User вы можете передать first_name или last_name, но не оба могут быть пустыми для создания экземпляра пользователя. Как определить класс для этого

class User:

    def __init__(self, fn=None, ln=None):
        self.fn = fn
        self.ln = ln

    def get_name(self):
        name = self.fn + self.ln
        if not name:
            return 'either first name or last name should be present'
        return name

Stills, он позволяет нам создать экземпляр пользователя без имени или фамилии, есть ли способ заставить объект User создавать экземпляр только при наличии либо first_name, либо last_name

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Вы можете попробовать это.

class User:
    def __init__(self, fn='', ln=''):
        if not fn and not ln:
            raise ValueError("must provide at least one name")
        self.fn = fn
        self.ln = ln

    @property
    def name(self):
        return self.fn + self.ln
0 голосов

Вы можете попробовать это:

class Validations:
    @staticmethod
    def check_user_params(first_name, last_name):
        if not first_name or not last_name:
            raise ValueError("Must provide at least one name")


class User(Validations):
    def __init__(self, first_name, last_name):
        self.check_user_params(first_name, last_name)
        self.first_name = first_name
        self.last_name = last_name

    def get_name(self):
        return f"{self.first_name} {self.last_name}"


if __name__ == "__main__":
    user_test= User("", "lastNameTest")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...