【问题标题】:TypeError: Car() takes no argumentsTypeError: Car() 没有参数
【发布时间】:2020-06-28 18:39:14
【问题描述】:

我正在尝试创建一个类。但是在运行代码时出现此错误:

TypeError: Car() 没有参数。

class Car:
   def __rep__(self):
        return f'Car({self.name},{self.year_built},{self.model})'


c1 = Car('minicooper','1970','MX1')

【问题讨论】:

  • 你的构造函数在哪里?
  • 您需要定义一个__init__ 以允许您在创建对象时传递数据。另请注意,您可能指的是__repr__,而不是__rep__
  • 这能回答你的问题吗? Class takes no arguments (1 given)

标签: python python-3.x class


【解决方案1】:

您的程序缺少构造函数,因此出现错误。另请注意,您可能指的是__repr__ 而不是__rep__。你的最终代码应该是这样的 -

class Car: 
    # In your code, this constructor was not defined and hence you were getting the error
    def __init__(self,name,year,model):
        self.name = name
        self.year_built = year
        self.model = model
    def __repr__(self):
        return f'Car({self.name},{self.year_built},{self.model})'

# The below statement requires a constructor to initialize the object
c1 = Car('minicooper','1970','MX1')

#
print(c1)

输出:

>>> Car(minicooper,1970,MX1)

__init__ 在 python 中用作构造函数。它用于初始化对象的状态。构造函数的任务是在创建类的对象时对类的数据成员进行初始化(赋值)。因此,当您在调用中传递变量 - Car('minicooper','1970','MX1') 时,将调用构造函数。您没有构造函数,因此收到错误消息。

__repr__(object) 用于返回包含对象可打印表示的字符串。这将在您尝试打印对象时使用。您在代码中错误地将其称为__rep__。我已经在上面的代码中更正了。

希望这会有所帮助!

【讨论】:

    【解决方案2】:
    class Car:
       # Constructor
       def __init__(self, name, year_built, model):
           self.name = name
           self.year_built = year_built
           self.model = model
    
       def __repr__(self):
            return f'Car({self.name},{self.year_built},{self.model})'
    
    
    c1 = Car('minicooper','1970','MX1')
    

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-16
      相关资源
      最近更新 更多