簡體   English   中英

構造函數參數過多

[英]Too many constructor arguments

我遇到了這個問題,我必須向構造函數傳遞很多參數才能實例化該類。 我不知道如何解決這個問題。

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

我已經考慮過構建器模式或工廠,但是我不知道哪種模式可以解決此問題,或者是否有其他方法可以解決此問題。

稍作修改后:

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. 您的輸入未聲明(在我的代碼中,所有輸入均為字符串)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM