【问题标题】:Too many constructor arguments构造函数参数过多
【发布时间】:2016-08-01 12:01:44
【问题描述】:

我遇到了这个问题,我必须将大量参数传递给构造函数才能实例化类。我不知道如何解决这个问题。

user = SpecialStudent(John, Doe, johndoe@example.com, 0612345678, 9988778, hello)

class User(Base):
    def __init__(self, name, surname, email):
        self.name = name
        self.surname = surname
        self.email = email

class Student(User):
    def __init__(self, name, surname, email, phone, student_number):
        super(Student, self).__init__(name, surname, email)
        self.phone = phone
        self.student_number = student_number

class SpecialStudent(Student):
    def __init__(self, name, surname, email, phone, student_number, random_param):
        super(SpecialStudent, self).__init__(name, surname, email, phone, student_number)
        self.random_param = random_param

我考虑过建造者模式或工厂,但我不知道哪种模式可以解决这个问题,或者是否有其他方法可以做到这一点。

【问题讨论】:

  • 为什么对你来说是个问题?

标签: python oop design-patterns constructor arguments


【解决方案1】:

经过小的修改:

class User(object):
    def __init__(self, name, surname, email):
        self.name = name
        self.surname = surname
        self.email = email

class Student(User):
    def __init__(self, name, surname, email, phone, student_number):
        super(Student, self).__init__(name, surname, email)
        self.phone = phone
        self.student_number = student_number

class SpecialStudent(Student):
    def __init__(self, name, surname, email, phone, student_number, random_param):
        super(SpecialStudent, self).__init__(name, surname, email, phone, student_number)
        self.random_param = random_param

user = SpecialStudent("John", "Doe", "johndoe@example.com", "0612345678", "9988778", "hello")
  1. 您的基类未定义
  2. 类声明前不要使用构造函数
  3. 您的输入未声明(在我的代码中,所有输入都是字符串)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 2017-04-04
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    相关资源
    最近更新 更多