-bash: gcc-8.0.2: команда не найдена (но она есть)

Подклассы имеют атрибуты своих суперклассов как свои атрибуты. Вы не можете использовать directionay.update({"zero":0}), потому что в это время class Subclass все еще не существует. Если вы не делаете line1 & amp; line2, вы все равно можете увидеть строку4 {'one':1, 'two':2}, подтверждающую ее.

Но если вы делаете line1 & amp; line2, вам нужно было добавить copy(), в противном случае вы увидите строку 3 и amp; line4 оба становятся {'zero': 0, 'two': 2, 'one': 1}, что означает, что вы хотите расширять параметры в подклассе, но вы также изменяете параметры в суперклассе, это не разумно.

Итак, следующий код будет просто выводиться:

< blockquote>

{'two': 2, 'one': 1}

{'zero': 0, 'two': 2, 'one': 1}

, который, я думаю, соответствует вашим требованиям.

class Super(object):
    dictionary = {'one':1, 'two':2}

    def __init__(self, var):
        self.var = var

    def supermethod(self):
        pass

class Subclass(Super):
    dictionary = Super.dictionary.copy() # line1
    dictionary.update({"zero":0}) # line2

    def __init__(self, var):
        super(Subclass, self).__init__(var)
        self.var = var

    def submethod(self):
        pass

print(Super.dictionary) # line3
print(Subclass.dictionary) # line4
0
задан White Thigh 19 January 2019 в 09:06
поделиться