繁体   English   中英

TypeError:__ init __()采用0位置参数,但给出了1

[英]TypeError: __init__() takes 0 positional arguments but 1 was given

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

  1. 创建一个类,并将其命名为“CustomerInfo”。
  2. 创建一个没有参数的构造函数(仅限self)。
  3. 为名称,订单,数量和地址创建用户输入。
  4. 为名称,顺序,数量和地址创建mutator方法。
  5. 为名称,订单,数量和地址创建存取方法。
  6. 创建一个新的CustomerInfo()对象并将其命名为“customer1”。
  7. 打印出客户信息。

这是我的代码:

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)__init__ ,现在当我运行模块时输入工作但是在我输入名称,顺序,数量和地址之后,结果如下:

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

__init__方法需要在Python中接受self ,因为它是一种方法。

更改:

def __init__ ():

至:

def __init__ (self):

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

  1. 说明说构造函数应该不使用self以外的参数。 这意味着没有参数的功能,所以你不能引用之类的东西theName的函数内。 那就是寻找一个全局变量,如果有的话,它应该很少使用。
  2. 您没有使用指令要求您使用的gettersetter (在您的指令中称为accessormutator )函数。 给定一个不带参数的构造函数 ,这些是继续进行的关键。

是的,这是您忘记(self,...) arg到__init__()或任何其他方法时得到的消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM