可选变量

问题描述 投票:0回答:1

对于一个班级 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

剧照它让我们可以实例化用户,不需要名字或姓氏,有什么方法可以让用户的名字和姓氏都不需要。User 只有当名字或姓氏中的任何一个存在时,才会实例化对象。

python python-3.x class init
1个回答
0
投票

你可以试试这个。

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")
© www.soinside.com 2019 - 2024. All rights reserved.