Не принимает аргументов

#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_ как у вас в настоящее время (обратите внимание на двойные подчеркивания).