Форум сайта python.su
Имеется некий базовый класс:
class MyClass: var_one = 'class ' var_two = ['class'] var_three = ['', ''] def __init__(self): pass
class OneClass(MyClass): def __init__(self): self.var_one += ' One' self.var_two.append('One') self.var_three[0] = 'One' class TwoClass(MyClass): def __init__(self): self.var_one += ' Two' self.var_two.append('Two') self.var_three[1] = 'Two'
classOne = OneClass() classTwo = TwoClass()
print(classOne.var_one) > class One print(classOne.var_two) > ['class', 'One', 'Two'] print(classOne.var_three) > ['One', 'Two']
Офлайн
Переменные надо создавать внутри метода __init__(), а не внутри класса за пределами методов. Тогда у каждого экземпляра эти переменные будут создаваться заново.
Офлайн
> а атрибуты типа списка var_two и var_three принимают непонятные (для меня) значения
Они существуют в пространстве имён класса. По этому они будут общими для всех его экземпляров.
P.S. Изменяемыми типами нужно пользоваться с осторожностью, часто их случайное изменение влечёт сложнообнаруживаемые ошибки.
Офлайн