python - 参数范围和返回值的区别
问题描述
下面的例子是我在野外看到的东西的简单版本。
class Client(object):
def __init__(self, session):
self.session = session
def _get(self, path, **kwargs):
self.session.get("etc")
def ScopedObject(cls):
return cls
ScopedClient = ScopedObject(Client) # Why??
最后一行有什么用?
这是我试图弄明白发生了什么的一个例子。(上面的代码只是为了上下文)。
>>> class A:
... def __init__(self, v):
... self.x = v
...
>>> def scope(cls): return cls
...
>>> a = A
>>> b = scope(a)
>>> a
<class __main__.A at 0x10989c2f0>
>>> b
<class __main__.A at 0x10989c2f0>
>>> a(1)
<__main__.A instance at 0x1098df910>
>>> b(1)
<__main__.A instance at 0x1098df870>
>>> a(1)
<__main__.A instance at 0x1098df910>
所以,好吧,这会导致他们的实例不同。但我可以通过以下方式完成同样的事情:
>>> c = a
>>> c(1)
<__main__.A instance at 0x1098df870>
它返回与 完全相同的实例b
。
我错过了什么?
解决方案
推荐阅读
- javascript - (鼠标离开)时保持(点击)效果
- elasticsearch - Timelion:如何计算拆分组
- python - TypeError:并非所有参数都在字符串格式化期间转换。有关如何解决此问题的任何帮助?
- python-3.x - 我可以使用循环自动定义 tkinter 小部件吗?
- json - 在传递 onClick 道具之前,如何检查数据中的空值?
- iis - 无法从 Windows 域外部访问已发布的 webapi
- c# - 创建并连接到新数据库
- android - Android CMake 和 ndk-build 生成不同大小的文件
- r - 如何在 ggplot2 条形图中显示 Tukey 事后测试的显着比较?
- python - Tesseract OCR 无法识别数字 7