相关疑难解决方法(0)

python如何在运行时更改方法的功能

想知道在运行期间是否可以改变方法的功能化,例如

x = obj1 + obj2
return x+y
Run Code Online (Sandbox Code Playgroud)

而你想要添加

x = obj1 + obj2
x+= obj3
return x+y
Run Code Online (Sandbox Code Playgroud)

python

6
推荐指数
2
解决办法
9113
查看次数

"特殊方法的隐式使用总是依赖于特殊方法的类级绑定"

我在Nutshell中很难理解Python中的最后一部分(粗体)

每实例方法

实例可以为所有属性提供特定于实例的绑定,包括可调用属性(方法).对于方法,就像任何其他属性一样(除了那些绑定到覆盖描述符的属性),特定于实例的绑定隐藏了类级别绑定:属性查找在直接在实例中找到绑定时不考虑该类.可调用属性的特定于实例的绑定不执行第110页的"绑定和未绑定方法"中详述的任何转换:属性引用返回与先前直接绑定到实例属性的可调用对象完全相同的内容.

但是,这并不像您可能期望的那样,Python会因各种操作而隐式调用的特殊方法的每个实例绑定,如第123页的"特殊方法"中所述.特殊方法的这种隐式使用始终依赖于特殊方法的类级绑定(如果有).例如:

def fake_get_item(idx): return idx
class MyClass(object): pass
n = MyClass()
n.__getitem__ = fake_get_item
print(n[23])                      # results in:
# Traceback (most recent call last):
#   File "<stdin>", line 1, in ?
# TypeError: unindexable object
Run Code Online (Sandbox Code Playgroud)

具体是什么意思?

为什么这个例子的错误?

谢谢.

python

5
推荐指数
1
解决办法
91
查看次数

标签 统计

python ×2