Я только что начал писать код в своей школе, и я учусь использовать Python. Наш преподаватель дал нам эту задачу:TypeError: __init __() принимает 0 позиционных аргументов, но 1 дано
- Создайте класс и дайте ему имя «CustomerInfo».
- Создайте конструктор без параметров (только для себя).
- Создайте пользовательские входы для имени, заказа, количества и адреса.
- Создайте методы мутатора для имени, порядка, количества и адреса.
- Создайте методы доступа для имени, заказа, количества и адреса.
- Создайте новый объект 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)
к __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
Да, это сообщение, которое вы получаете, когда забываете '(self, ...)' arg to '__init __()' или любой другой метод. – smci
Если вы интуитивно думаете, что '__init__' не должны принимать какие-либо аргументы, тогда обратите внимание, что' __init__' не создает новый экземпляр класса; [это делается вместо '__new__' вместо этого] (http://stackoverflow.com/questions/674304/pythons-use-of-new-and-init). Но вам, вероятно, не нужно определять свой собственный '__new__'. – z0r
Если вы не используете Python 3 (что неясно из вопроса), ваш класс должен наследовать от 'object', то есть' class CustomerInfo (object): ' – sapi