class Base: def __init__(self, props=list(), foo='foo base'): self.props = props self.foo = foo def insert_prop(self, i): self.props.append(i) class Sub1(Base): pass if __name__ == '__main__': base = Base() base.insert_prop(1) base.insert_prop(2) print('base props before base2, 3 creation:', base.props) base2 = Base() base3 = Base([41, 42]) print('base props after base2, 3 creation:', base.props) print('base2 props after base2, 3 creation:', base2.props) print('base3 props after base2, 3 creation:', base3.props) base2.insert_prop(51) base3.insert_prop(61) print('base props after insertion:', base.props) print('base2 props after insertion:', base2.props) print('base3 props after insertion:', base3.props) print('base foo before assignment:', base.foo) base.foo = 'foo base in wild' print('base foo after assignment:', base.foo) print('base props before sub creation:', base.props) sub1 = Sub1() sub2 = Sub1(list(), 'foo sub2 in creation') print('sub1 foo after creation:', sub1.foo) print('sub2 foo after creation:', sub2.foo) sub1.foo = 'foo sub1' print('base foo after sub1 assignment:', base.foo) print('sub1 foo after sub1 assignment:', sub1.foo) print('sub2 foo after sub1 assignment:', sub2.foo) sub2.foo = 'foo sub2' print('base foo after sub2 assignment:', base.foo) print('sub1 foo after sub2 assignment:', sub1.foo) print('sub2 foo after sub2 assignment:', sub2.foo) print('sub1 props after sub creation', sub1.props) print('sub2 props after sub creation', sub2.props) print('base props after sub creation:',base.props) sub1.insert_prop(13) sub1.insert_prop(14) print('sub1 props after sub1 insertion', sub1.props) print('sub2 props after sub1 insertion', sub2.props) print('base props after sub1 insertion:',base.props) sub2.insert_prop(23) sub2.insert_prop(24) print('sub1 props after sub2 insertion', sub1.props) print('sub2 props after sub2 insertion', sub2.props) print('base props after sub2 insertion', base.props)