调用一个运行函数的python变量,该函数返回原始python变量

时间:2015-06-18 23:06:03

标签: python dynamic properties decorator

我试图创建一个变量,当我调用或使用该变量时,它会运行一个函数来执行操作并返回某个变量。一个例子会更有意义:

def establish_client():
    a = None
    if True:
        a = 'A'
    return a


>>> print establish_client
'A'

可以这样做吗?基本上有一种方法可以运行方法并返回一些不使用括号的东西吗?

2 个答案:

答案 0 :(得分:1)

在一般情况下:否。

但是有一些技术可能会接近。

属性允许对象中的成员使用类似的东西。

class Demo(object):
    @property
    def establish_client(self):
        a = None
        if True:
            a = 'A'
        return a

d = Demo()
print d.establish_client

但属性不适用于局部变量或全局变量。

此外,您可以使用__str__进行字符串转换,但仅当您以将变量转换为字符串的方式使用该变量时才需要此行为。通常情况并非如此。请参阅mescalinum答案,了解如何做到这一点。

答案 1 :(得分:0)

注意:以下是黑客攻击,并且可能有很多理由不这样做。

您可以使用class__str__()方法在该行上取得一些成就:

class foo:
    def __init__(self):
        pass
    def __str__(self):
        a = None
        if True:
            a = 'A'
        return a

测试:

>>> f=foo()
>>> print(f)
'A'
>>>

注意:它仅适用于将参数明确视为字符串的print和函数。

例如,如果要将其字符串值分配给另一个变量,则必须使用str(f),以便最终使用括号。