你如何在python中引用一个带有变量的类实例?

时间:2015-05-21 12:42:35

标签: python

我是Python的新手,我已经找到了答案但却找不到答案。也许我只是错误地问它......

举个例子,如果我有一个类如下:

class Person(object):
    def __init__(self, name):
        self.name = name

我创建了几个实例,如下所示,可以得到这样的属性:

person1 = Person("John")
person2 = Person("Mike")
print person1.name
print person2.name

我想要做的是替换" personX"有一个变量,这是我还没想到的部分。我想使用它来遍历映射到类实例的名称列表并获取/设置它们的属性。

name1 = "person1"
print "%s".name % (name1) <--- this fails with "AttributeError: 'str' object has no attribute 'name'

3 个答案:

答案 0 :(得分:1)

每当您想创建variableX X为递增数字时,您真的需要列表

people = []
people.append(Person('John'))
people.append(Person('Mike'))

for person in people:
    print person.name

print people[0].name

答案 1 :(得分:0)

使用^(?<settlment>\d{2}[\/]\d{2})(?:\s)(?<product>.+?)(?:\s)(?<type>.+?)(?:\s)(?<transaction>\d{1-12}[\/]{1-31}[\/].[0-9]|0[0-9]|1[0-9]|2[0-3]:[0-5][0-9].+?)(?:\s)(?<control>\b\d{3}[-.]?\d{3}[-.]?\d{4}\b)(?:\s)(?<retail>[+-]?[0-9]{1,3}(?:,?[0-9]{3})*\.[0-9]{2})(?:\s)(?<discount>[+-]?[0-9]{1,3}(?:,?[0-9]{3})*\.[0-9]{2})(?:\s)(?<cost>[+-]?[0-9]{1,3}(?:,?[0-9]{3})*\.[0-9]{2})(?:\s)(?<commission>[+-]?[0-9]{1,3}(?:,?[0-9]{3})*\.[0-9]{2})$ 以这种方式获取由创建的字符串引用的实例

Settlement Date => 05/18 
Product => TMobileRTR 10-100 PE 
Type => Sold 
Transaction Date/Time => 5/17/2015 11:34 PM 
Control Number => 5555556666 
Retail => $75.00 
Discount => 8.75 % 
Cost => $68.44 
Commission => $6.56 

答案 2 :(得分:0)

通常情况下,这被视为不良做法,尤其是使用evalexec时这样做:

people = {'person1': Person('Bob'), 'person2': Person('Sam')}