1 import sys
2
3 class dummy(object):
4 def __init__(self, val):
5 self.val = val
6
7 class myobj(object):
8 def __init__(self, resources):
9 self._resources = resources
10
11 class ext(myobj):
12 def __init__(self, resources=[]):
13 #myobj.__init__(self, resources)
14 self._resources = resources
15
16 one = ext()
17 one._resources.append(1)
18 two = ext()
19
20 print one._resources
21 print two._resources
22
23 sys.exit(0)
これにより、とオブジェクトone._resources
の両方に割り当てられたオブジェクトへの参照が出力されます。オブジェクトの作成時に定義されていない場合は、明らかにそのように設定されているため、空の配列になると思います。コメントを外しても同じことが起こります。を使用しても同じことができます。one
two
two
myobj.__init__(self, resources)
super(ext, self).__init__(resources)
それを機能させる唯一の方法は、次を使用する場合です。
two = ext(dummy(2))
これを機能させるために、オブジェクトを作成するときにデフォルト値を手動で設定する必要はありません。または多分私はそうします。何かご意見は?
Python 2.5および2.6を使用してこれを試しました。