有没有办法使用字符串来调用类的方法?以下是一个示例,希望能更好地解释(使用我认为应该的方式):
class helloworld():
def world(self):
print "Hello World!"
str = "world"
hello = helloworld()
hello.`str`()
这将输出Hello World!
。
谢谢提前。
有没有办法使用字符串来调用类的方法?以下是一个示例,希望能更好地解释(使用我认为应该的方式):
class helloworld():
def world(self):
print "Hello World!"
str = "world"
hello = helloworld()
hello.`str`()
这将输出Hello World!
。
谢谢提前。
getattr
:>>> class helloworld:
... def world(self):
... print("Hello World!")
...
>>> m = "world"
>>> hello = helloworld()
>>> getattr(hello, m)()
Hello World!
class helloworld()
中的括号是不必要的。str
是一个不幸的变量名。警告:exec是一种危险的函数,在使用前请进行研究
您也可以使用内置函数“exec”:
>>> def foo(): print('foo was called');
...
>>> some_string = 'foo';
>>> exec(some_string + '()');
foo was called
>>>
一种方法是您可以将变量设置为与数据一样的函数
def thing1():
print "stuff"
def thing2():
print "other stuff"
avariable = thing1
avariable ()
avariable = thing2
avariable ()
你将得到的输出是
stuff
other stuff
然后你可以变得更加复杂,并且拥有
somedictionary["world"] = world
somedictionary["anotherfunction"] = anotherfunction
等等。如果你想要自动将模块的方法编译成字典,请使用dir()。
class helloworld():
def world(self):
print "Hello World!"
str = "world"
hello = helloworld()
completeString = "hello.%s()" % str
exec(completString)