这是我的代码的相同表示,我只想知道是否有办法从第一个动作(word)获得第二个动作(word1)的结果。这里的主要目标是,如果我更改变量letter
,则指定的值也应该与类中的变量相对应。
class Test():
def __init__(self, x='world'):
self.a = 'hi {}'.format(x)
self.b = 'hello'
self.c = 'hey'
letter = 'a'
word = "Test(x='{}').{}".format('new world', letter)
print(word)
# prints Test(x='new world').a, expected 'hi new world'
word1 = Test(x='new world').a
print(word1)
# prints 'hi new world'
答案 0 :(得分:0)
如果您尝试从对象获取属性,并且您有一个包含该属性名称的字符串,则可以使用getattr
:
class Test():
def __init__(self, x='world'):
self.a = 'hi {}'.format(x)
self.b = 'hello'
self.c = 'hey'
x = Test("new world")
letter = "a"
print(getattr(x, letter))
#output: hi new world
letter = "b"
print(getattr(x, letter))
#output: hello
如果您正在考虑“好的,但我不想再多次拨打getattr
;我想一次word = getattr(x, letter)
,并且每次都会自动更新我之后更改letter
。不幸的是,普通字符串是不可能的,因为字符串是不可变的。在创建字符串对象后,您无法更改它的值。您可以更改名称word
所指的内容,但每次都需要一个赋值语句。