如果可调用,内置函数可以获取对象的值吗?

发布于 2024-10-13 08:34:10 字数 464 浏览 3 评论 0原文

class Thing():
    xyz = "I'm a string"

class Truc():
    def xyz(self):
        return "I'm a function"

def valueOrCalledValue(input):
    if callable(input):
        return input()
    else:
        return input

thing = Thing()
print valueOrCalledValue(thing.xyx)

>>> "I'm a string"

truc = Truc()
print valueOrCalledValue(truc.xyz)

>>> "I'm a function"

是否有一个内置函数可以执行我的 valueOrCalledValue 的操作?

class Thing():
    xyz = "I'm a string"

class Truc():
    def xyz(self):
        return "I'm a function"

def valueOrCalledValue(input):
    if callable(input):
        return input()
    else:
        return input

thing = Thing()
print valueOrCalledValue(thing.xyx)

>>> "I'm a string"

truc = Truc()
print valueOrCalledValue(truc.xyz)

>>> "I'm a function"

Is there a built-in function that does what my valueOrCalledValue does?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我纯我任性 2024-10-20 08:34:10

尝试使用装饰器来使其整洁。

Try properties using decorators to make it tidy.

¢好甜 2024-10-20 08:34:10

我不知道有什么内置函数可以做到这一点。或者,您可以使用“if else”表达式在一行中执行此操作:

print my_thing() if callable(my_thing) else my_thing

将其分配给变量的工作方式相同:

my_var = my_thing() if callable(my_thing) else my_thing

I don't know any built-in function to do that. Alternatively, you could do this in one line using a "if else" expression:

print my_thing() if callable(my_thing) else my_thing

assigning it to a variable works the same way:

my_var = my_thing() if callable(my_thing) else my_thing
善良天后 2024-10-20 08:34:10

用这个。它更简单,并且始终适用于“callable”的所有可能变体。

def valueOrCalledValue(input):
    try:
        return input()
    except TypeError:
        return input

Use this. It's simpler and always works for all possible variants on "callable".

def valueOrCalledValue(input):
    try:
        return input()
    except TypeError:
        return input
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文