说我有这样的功能
def spam():
spam.eggs = "Foobar"
#do stuff
return
我想在另一个函数中获取spam.eggs
( "Foobar"
) 的值,而不必实际调用该spam()
方法,例如,
def main():
print spam.eggs
我希望它返回Foobar
。但是,显然,这行不通,因为我还没有调用 spam(),所以我从未分配过该spam.eggs
属性,所以我必须这样做
def main():
spam()
print spam.eggs
但是,如果我想要属性我不想调用该spam()
函数eggs
,实际上我想在调用它之前检查是否spam()
有eggs属性,如果它等于"Foobar"
,例如
def main():
if hasattr(spam,'eggs'):
if getattr(spam, 'eggs') == "Foobar":
spam()
但是和以前一样,因为我还没有打电话,所以我spam
还没有分配spam.eggs
。
有没有办法做到这一点,也许用装饰器?我想保持分配有点接近功能,所以我更喜欢不喜欢的东西
def func():
setattr(spam, 'eggs', 'Foobar')
setattr()
除非在装饰器中,否则我必须使用另一种方法。