Python类 - 每个类调用新的id

时间:2014-12-16 21:04:26

标签: python class

是否可以将类实例存储为新实例。例如,

class ClassName(object):
    def __init__(self, **kw):
         self._name = ''
         self._time = float(timeString)


         for attr, val in kw.items():
               if val == None:
                  continue
               setattr(self, '_' + attr, val)

    def getName(self): return self._name
    name = property(getName)

但是我们可以说我们将实例存储在一个类似的列表中。

cl = ClassName('name1')
cl2 = ClassName('name2')
li = list()
li.append(cl)
li.append(cl2)

然后我们遍历它们。

for c in li:
    print( c.name )

它们会有不同的值,或者它们是否相同,如果是这样,我怎样才能给类实例一个唯一的id?

2 个答案:

答案 0 :(得分:1)

如果我明白你的意思,那么是的:他们会有不同的价值观。解决了评论中提到的问题:

class ClassName(object):
    def __init__(self, **kw):
         self._name = ''
         for attr, val in kw.items():
               if val == None:
                  continue
               setattr(self, '_' + attr, val)

    def getName(self): return self._name
    name = property(getName)

cl = ClassName(name='name1')
cl2 = ClassName(name='name2')
li = list()
li.append(cl)
li.append(cl2)

然后:

>>> li[0].name
'name1'
>>> li[1].name
'name2'

(您使用关键字参数设置的名称)。

答案 1 :(得分:0)

使用跟踪类变量的字典对象,可以添加和删除类的变量。

只需将字典传递给对象内置字典update()的{​​{1}}方法即可。键将是可从类中访问的变量名。

__dict__

请参阅下面的add_food()函数以获取真实示例。

实施例

class EmptyClass: 
    pass

var_name = 'new_variable'
var_value = 'This variable is a test, anything can go here'

obj = EmptyClass()
obj.__dict__.update( {var_name: var_value} )

print obj.new_variable