我是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'
答案 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)
通常情况下,这被视为不良做法,尤其是使用eval
和exec
时这样做:
people = {'person1': Person('Bob'), 'person2': Person('Sam')}