Python 的传址和传值疑问

2017-02-21 18:47:40 +08:00
 qsnow6
import random


class MyFun(object):

    def __getattr__(self, key):
        if key == 'random':
            return random.random()
        else:
            pass

f = MyFun()
f.random


如上代码

如何把 f.random 传给一个变量,比如a,然后以后调用 a 就执行 f.random?

试过浅拷贝、深拷贝都没用。。

2601 次点击
所在节点    Python
24 条回复
forrestchang
2017-02-21 20:38:53 +08:00
@qsnow6 那么这个样子呢,改成计算属性好了

class WTF(object):
def __init__(self):
pass

@property
def user_agent(self):
return UserAgent().random


wtf = WTF()
wtf.user_agent # call user_agent()

__repr__ 不是像你这么用的

Called by the repr() built-in function to compute the “ official ” string representation of an object. If at all possible, this should look like a valid Python expression that could be used to recreate an object with the same value (given an appropriate environment). If this is not possible, a string of the form <...some useful description...> should be returned. The return value must be a string object.
ericls
2017-02-21 21:06:44 +08:00
Python 是按 assignment 传的
junnplus
2017-02-21 21:29:44 +08:00
property 应该是正解吧
Allianzcortex
2017-02-21 22:12:22 +08:00
@cheetah Yep !!! a()!!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/342147

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX