#python
#python
Вопрос:
моя программа говорит, что произошла ошибка, и она не принимает никаких аргументов. Кто-нибудь может обнаружить ошибку? Это в строке 30 и строке 12. Спасибо
class City():
#define the structure and content of the Student Record
def _init_(self, name, country, population, language):
self.name = name #name will be a string
self.country = country #country will be a string
self.population = population #population will be an integer
self.language = language #language wil be a string
def createCitiesArray(num, City):
citiesArray = []
for counter in range(num):
citiesArray.append(City("", "", 0, ""))
return citiesArray
def populateCitiesArray(citiesArray, num):
for counter in range(num):
citiesArray[counter].name = str(input("Please enter a city name: "))
citiesArray[counter].country = str(input("Please enter a country: "))
citiesArray[counter].population = int(input("Please enter city population: "))
citiesArray[counter].language = str(input("Please enter main language: "))
return citiesArray
def displayCitiesArray(citiesArray, num):
print(citiesArray[counter].name, citiesArray[counter].country)
for counter in range(num):
print(citiesArray[counter].name, citiesArray[counter].country, citiesArray[counter].population, citiesArray[counter].language)
#Top level program
numOfCities = 3
citiesArray = createCitiesArray(numOfCities, City)
citiesArray = populateCitiesArray(citiesArray, numOfCities)
displayCitiesArray(citiesArray, numOfCities)
Вывод:
Traceback (most recent call last):
File "python", line 30, in <module>
File "python", line 12, in createCitiesArray
TypeError: City() takes no arguments
Ответ №1:
Конструктор должен быть назван __init__
с двойным подчеркиванием до и после, а не _init_
.
Без конструктора с подходящим именем Python создает для вас конструктор по умолчанию, который не принимает аргументов.
Ответ №2:
Конструктор в Python определяется как __init__
, а не _init_
как у вас в настоящее время (обратите внимание на двойные подчеркивания).