简单OOP:Python,通过_init__v2保存对象名
好的,我以前问过一个类似的问题,但是因为我没有正确的术语,所以太让人困惑了。这是我第二次吃苹果 我想创建一个对象,它的简单OOP:Python,通过_init__v2保存对象名,python,oop,Python,Oop,好的,我以前问过一个类似的问题,但是因为我没有正确的术语,所以太让人困惑了。这是我第二次吃苹果 我想创建一个对象,它的\uuuu init\uuu将把分配给该对象的名称保存在一个列表中 有点像这样: class Object(): def __init__(self, something): self.something = something (now how do I save the xxx, xx, and x names I create below?) xx
\uuuu init\uuu
将把分配给该对象的名称保存在一个列表中
有点像这样:
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)
我想要一个包含[xxx,xx,x]
对不起,格式太糟糕了。我希望我的问题仍然很清楚
例如:
total_objects = [xxx, xx, x]
另外,请让我知道我的方法是否草率,是否有更好的方法,但我不想在代码本身中保存“x”名称。例如
total\u objects.append(xxx)
total\u objects.append(xx)
等等。我希望它是自动的。在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)
[<__main__.Object instance at 0x012BA760>, ...]
然后,Object.my_实例
将包含一个实例列表:
class Object(object):
my_instances = []
def __init__(self):
my_instances.append(self)
[<__main__.Object instance at 0x012BA760>, ...]
[,…]
但是,这可能不是您想要的。在Python中不能完全做到这一点,因为不需要将对象指定给特定的名称,因此初始化器不会传递此类信息
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)
例如,以下行都是有效的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)
[<__main__.Object instance at 0x012BA760>, ...]
然后,Object.my_实例
将包含一个实例列表:
class Object(object):
my_instances = []
def __init__(self):
my_instances.append(self)
[<__main__.Object instance at 0x012BA760>, ...]
[,…]
然而,这可能不是你想要的
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
输出:
123
12
1
你想要对象的名称还是对象的实例?这个确切的问题很久以前就出现了,它甚至被回答了(用一些肮脏的黑客),但我恐怕找不到它。我的想法是:明确地写下这个问题,或者使用Lisp。你想要对象的名称还是对象的实例?这个问题很久以前就出现了,它甚至得到了回答(用一些肮脏的黑客),但我恐怕找不到它。我的想法是:显式编写或使用Lisp。