0

OK、以前にも同様の質問をしましたが、用語が正しくないために混乱しすぎました。りんごをかじったのはこれが2回目です。

__init__オブジェクトに割り当てられた名前をリストに保存するオブジェクトを作成したいと考えています。

このようなちょっと:

class Object():

  def __init__(self, something):

    self.something = something
    (now how do I save the xxx, xx, and x names I create below?)

xxx = Object(something)

xx = Object(something)

x = Object(something)

お粗末なフォーマットで申し訳ありませんが含まれているグローバルtotal_objects(または何でも)が必要です。[xxx, xx, x]私の質問がまだ明確であることを願っています。

そのような:

 total_objects = [xxx, xx, x]

また、私のアプローチがずさんで、より良い方法がある場合はお知らせください。ただし、コード自体に「x」名を保存する必要はありません。などtotal_objects.append(xxx) total_objects.append(xx)など 自動で欲しい。

4

2 に答える 2

4

オブジェクトを特定の名前に割り当てる必要がないため、Python ではこれを正確に行うことはできません。したがって、イニシャライザはそのような情報を渡されません。

たとえば、次の行はすべて有効な Python です。

x = Object()
y = x
Object()
[Object() for i in xrange(5)]
x = [Object() for i in xrange(5)]

オブジェクトのインスタンスを追跡したい場合はそれを行うことができますが、それはそれらのインスタンスを参照する名前とは別のものです:

class Object(object):
    my_instances = []

    def __init__(self):
        my_instances.append(self)

次にObject.my_instances、インスタンスのリストが含まれます。

[<__main__.Object instance at 0x012BA760>, ...]

ただし、これはあなたが望むものではないかもしれません。

于 2012-06-24T18:06:41.840 に答える
2
lis = []
class Object():
    def __init__(self, var):
        self.something = var 
        lis.append(self)  #here self is the reference to the instance being created and you can save it in a list to access it later
xxx = Object('123')
xx = Object('12')
x = Object('1')

for x in lis:
    print(x.something)

出力:

123
12
1
于 2012-06-24T18:07:59.660 に答える