【发布时间】:2016-09-01 03:28:44
【问题描述】:
有时我不知道用户会操作什么。
class User(object):
...
def get_name(self):
return self.name
def get_age(self):
return self.age
operation = "http://localhost:8080/user/get_name".split('/')[-1]
user = User(...)
如您所见,operation 是一个变量名,与类属性相同。
我试试:
eval('user.{}'.format(operation))
它可以运行。不过看起来很合适
现在我想通过user.operation这样的方式来处理它
我是怎么做到的?
【问题讨论】:
-
user.__getattribute__(operation) -
旁注:Python 不赞成
get_x函数。允许直接访问属性(如果它们应该是可变的),或者将属性命名为_name(以指示实现细节)并创建一个名为name的@property函数,因此您可以通过 @987654330 访问@ 不需要括号。 -
事实上,如果我的类
Foo有一个名为get_name()的属性,mybey我会得到一个变量test,其值为get_name,所以我想通过@987654335执行它@。或许这不是很清楚的表达方式
标签: python