Класс не настроен правильно. Это переменные класса, которые одинаковы для каждого экземпляра класса. Вы хотите переменные экземпляра, которые являются отдельными для каждого экземпляра. вот ссылка, чтобы узнать больше
Чтобы исправить
class City:
def __init__(self, name, country,elevation, population)
self.name = name
self.country = country
self.elevation = elevation
self.population = population
Затем, чтобы создать новый экземпляр:
city1 = City("Cusco","Peru",3399,358052)
Вы все еще можете получить Атрибуты, выполнив
print(city1.name) # prints "Cusco"
Если вы сделаете их переменными класса следующим образом:
class City:
name = ""
country = ""
elevation = 0
population = 0
тогда при создании нового экземпляра:
city1 = City()
city1.name = "Cusco"
city1.country = "Peru"
city1.elevation = 3399
city1.population = 358052
# create a new instance of the City class and
# define each attribute
city2 = City()
city2.name = "Sofia"
city2.country = "Bulgaria"
city2.elevation = 2290
city2.population = 1241675
все они будут иметь одинаковые значения:
print(city1.name) #output 'Sophia'
print(city2.name) #output 'Sophia'
, поскольку вы изменили переменную во всех случаях
, как для функции, я бы сделал это:
def max_elevation_city(min_population):
cities = [city1, city2, city3, city4]
lowest = None
lowest_pop = 999999999
for city in cities:
if city.population > min_population:
if city.population < lowest_pop:
lowest = city
if lowest != None:
return lowest.name
return ""