Найти - Пользователи
Полная версия: список экземпляров класса
Начало » Python для новичков » список экземпляров класса
1 2
kpotko
GreyZmeem
State.class_instances.append(…)Вы можете описать для чего вам сохранять все создаваемые объекты (да еще и в классах потомках)? Мне кажется что вы сильно усложняете себе задачу, когда действительно можно, как написал Alex_HH, все сохранять в обычный list.

Всего лишь то, что просит препод , не больше.
ему внезапно захотелось, чтобы появился класс-наследник, с дополнительным параметром , и его объекты тоже сохранялись в массив/список, и потом выводились всей пачкой в цикле.

State.class_instances.append(…), если его делать же, то выдаст ошибку, что подано больше аргументов, чем ожидалось (в классе State : self,country,capital , а в наследнике будет еще +1 свойство)
GreyZmeem
class State(object):
    class_instances = []
 
    def __init__(self, country, capital):
        self.country = country
        self.capital = capital
        self.class_instances.append(self)
 
    def __str__(self):
        return u'The capital of {} is {}.'.format(self.country, self.capital).encode('utf-8')
 
    @classmethod
    def print_out(cls):
        for state in cls.class_instances:
            print state
 
 
class StatePopulation(State):
    def __init__(self, population, *args, **kwargs):
        super(StatePopulation, self).__init__(*args, **kwargs)
        self.population = population
 
    def __str__(self):
        return u'The capital of {} is {}. Population: {}.'.format(self.country, self.capital, self.population).encode('utf-8')
 
 
State('Russia', 'Moscow')
State('Ukraine', 'Kiev')
State('Belarus', 'Minks')
StatePopulation(1606000, 'Zimbabwe', 'Harare')
 
State.print_out()
The capital of Russia is Moscow.
The capital of Ukraine is Kiev.
The capital of Belarus is Minks.
The capital of Zimbabwe is Harare. Population: 1606000.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB