【问题标题】:Why does CPython create multiple instances of the same method?为什么 CPython 会创建同一个方法的多个实例?
【发布时间】:2018-07-08 07:18:39
【问题描述】:
>>> (1).__str__!=(2).__str__
True

是否有任何技术原因使它们成为单独的对象而不是引用单个对象?好像会更有效率

【问题讨论】:

    标签: cpython


    【解决方案1】:

    那是因为你没有得到__str__ 函数,而是它的方法包装器。

    >>> x = (1).__str__
    >>> type(x)
    <class 'method-wrapper'>
    >>> x()
    '1'
    >>> x.__self__
    1
    
    >>> x = (2).__str__
    >>> x()
    '2'
    >>> x.__self__
    2
    

    方法包装器是一个保留对self 的引用的对象。所以每个实例都必须不同。

    更多详情,请查看this question

    【讨论】:

      猜你喜欢
      • 2016-12-24
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 2016-04-01
      • 2011-11-21
      • 2011-06-17
      相关资源
      最近更新 更多