Python 参数范围和返回值的差异

Python 参数范围和返回值的差异,python,function,design-patterns,Python,Function,Design Patterns,下面的例子是我在野外看到的一些东西的简单版本 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 = Scope

下面的例子是我在野外看到的一些东西的简单版本

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??
最后一行有什么用

下面是一个我试图弄清楚发生了什么的例子。(上面的代码仅用于上下文)

>>A类:
...     定义初始值(self,v):
...             self.x=v
...
>>>def作用域(cls):返回cls
...
>>>a=a
>>>b=范围(a)
>>>a
>>>b
>>>a(1)
>>>b(1)
>>>a(1)
所以,好吧,这会导致它们的实例不同。 但我也可以通过这样做来完成同样的事情:

>>> c = a
>>> c(1)
<__main__.A instance at 0x1098df870>
>c=a
>>>c(1)
它返回与
b
完全相同的实例


我遗漏了什么?

你发布的代码毫无意义。也许原始代码也是毫无意义的,或者可能是您无意中删除了该点。我不会结束这个问题,因为答案很清楚:正如您正确推断的,
a
b
指向同一个对象-
ScopedObject
函数没有任何用处。是的,我同意我发现的代码似乎毫无意义。然而,我看到这个“设计选择”在生产代码中重复了好几次,这让我怀疑它实际上毫无意义。因此,我为什么要问这个问题:我遗漏了什么?从你的例子中我们可以看出,你没有遗漏任何东西。
>>> c = a
>>> c(1)
<__main__.A instance at 0x1098df870>