我正在尝试使用getattr(...)
通过循环编写调用多个函数。下面的代码段:
class cl1(module):
I =1
Name= 'name'+str(I)
Func= 'func'+str(I)
Namecall = gettattr(self,name)
Namecall = getattr(self,name)()
这是获取以下代码的时间:self.name1 = self.func1()
希望循环多个这些但代码不起作用。你能告诉我吗?
答案 0 :(得分:2)
首先,使用CapitalLetters for Classes和lowercase_letters作为变量,因为它更容易为其他Python程序员阅读:)
现在,您不需要在类本身内部使用getattr() 只是做:
self.attribute
然而,一个例子是:
class Foo(object): # Class Foo inherits from 'object'
def __init__(self, a, b): # This is the initialize function. Add all arguments here
self.a = a # Setting attributes
self.b = b
def func(self):
print('Hello World!' + str(self.a) + str(self.b))
>>> new_object = Foo(a=1, b=2) # Creating a new 'Foo' object called 'new_object'
>>> getattr(new_object, 'a') # Getting the 'a' attribute from 'new_object'
1
但是,更简单的方法就是直接引用属性
>>> new_object.a
1
>>> new_object.func()
Hello World!12
或者,使用getattr():
>>> getattr(new_object, 'func')()
Hello World!12
虽然我解释了getattr()函数, 我似乎不明白你想要实现什么,请发布样本输出。