Python TypeError:\uuuu init\uuuu()接受0个位置参数,但给出了1个

Python TypeError:\uuuu init\uuuu()接受0个位置参数,但给出了1个,python,class,methods,typeerror,init,Python,Class,Methods,Typeerror,Init,我最近刚在学校开始编写代码,我正在学习如何使用Python。 我们的老师给了我们这个任务: 创建一个类并将其命名为“CustomerInfo” 创建一个没有参数的构造函数(只有self) 为名称、订单、数量和地址创建用户输入 为名称、订单、数量和地址创建mutator方法 为名称、订单、数量和地址创建访问器方法 创建一个新的CustomerInfo()对象并将其称为“customer1” 打印出客户信息 这是我的密码: class CustomerInfo: def __init__

我最近刚在学校开始编写代码,我正在学习如何使用Python。 我们的老师给了我们这个任务:

  • 创建一个类并将其命名为“CustomerInfo”
  • 创建一个没有参数的构造函数(只有self)
  • 为名称、订单、数量和地址创建用户输入
  • 为名称、订单、数量和地址创建mutator方法
  • 为名称、订单、数量和地址创建访问器方法
  • 创建一个新的CustomerInfo()对象并将其称为“customer1”
  • 打印出客户信息
  • 这是我的密码:

    class CustomerInfo:
    
        def __init__ ():
            self.name = theName
            self.order = theOrder
            self.quantity = theQuantity
            self.address = theAddress
    
        def setName( self, newName ):
            self.Name = newName
        def setOrder ( self, newModel ):
            self.model = newModel
        def setQuantity ( self, newQuantity ):
            self.quantity = newQuantity
        def setAddress (self, newAddress ):
            self.address = newAddress
    
        def getName ( self ):
            return self.name
        def getOrder ( self ):
            return self.order
        def getQuantity ( self ):
            return self.quantity
        def getAddress ( self ):
            return self.address
    
    name = input("Enter your name: ")
    order = input("Enter your order: ")
    quantity = int(input("Enter your quanity: "))
    address = input("Enter your address: "))
    
    customer1 = CustomerInfo()
    
    print ( "Name: ", customer1.name)
    print ( "Order: ", customer1.order)
    print ( "Quanity: ", customer1.quantity)
    print ( "Address: ", customer1.address)
    
    但是,我得到了以下错误:

    TypeError: __init__() takes 0 positional arguments but 1 was given
    
    我将
    (self)
    添加到
    \uuuu init\uuuu
    中,如注释中所述,现在当我运行模块时,输入工作正常,但在输入名称、订单、数量和地址后,结果如下所示:

    Traceback (most recent call last):
    File line 32, in <module>
        customer1 = CustomerInfo()
    File line 4, in __init__
        self.name = theName
    NameError: name 'theName' is not defined
    
    回溯(最近一次呼叫最后一次):
    文件第32行,在
    customer1=CustomerInfo()
    文件第4行,在_init中__
    self.name=名称
    名称错误:未定义名称“theName”
    
    Python中的
    \uuuuu init\uuuu
    方法需要接受
    self
    ,因为它是一种方法

    更改:

    def __init__ ():
    
    致:


    是的,这是当您忘记
    (self,…)
    arg to
    \uuu init\uuu()
    或任何其他方法时得到的消息。

    我不想为您提供确切的代码,因为这是家庭作业,如果您自己找到正确的代码,您将学习得更好。我将指出两个要点(在添加
    self
    之后,您已经提到并添加了这两个要点),这两个要点应该允许您自己继续编写代码:

  • 说明中说,构造函数不应接受除self以外的任何参数。这意味着函数没有参数,因此不能在函数内部引用名称之类的内容。这本质上是在寻找一个全局变量,它应该很少被使用
  • 您没有使用指令要求您使用的getter和setter(在指令中称为accessor和mutator)函数。在给定一个不带参数的构造函数的情况下,这些是继续操作的关键

  • 是的,这是当您忘记
    (self,…)
    arg到
    \uuuu init\uuu()
    或任何其他方法时得到的消息。如果直觉上您认为
    \uuuu init\uuuuu
    不应该接受任何参数,那么请注意
    \uuu init\uuu
    不会创建类的新实例。但是您可能不需要定义自己的
    \uuuuu new\uuuuu
    。如果您没有使用Python 3(这个问题还不清楚),那么您的类应该继承自
    对象,即
    类CustomerInfo(object):
    @sapi这真的是他最不担心的。@sapi:。
    def __init__ (self):