lon_grid = np.linspace(113.5,115.49,36)
lat_grid = np.linspace(37.40,38.78,30)
lon_grid,lat_grid = np.linspace(xc1,xc2,36), np.linspace(yc1,yc2,30)
for i in range(0,len(lon_grid),1):
ax.axvline(x=lon_grid[i], linestyle='-', color='black', linewidth=0.75, zorder=3)
for i in range(0,len(lat_grid),1):
ax.axhline(y=lat_grid[i], linestyle='-', color='black', linewidth=0.75, zorder=3)
使用此代码,左侧获得比较的第一个镜头,在数据模型中为documented:
class L(object):
def __eq__(self, other):
print 'invoked L.__eq__'
return False
class R(object):
def __eq__(self, other):
print 'invoked R.__eq__'
return False
left = L()
right = R()
但如果我们在第6行稍作修改(其他一切都相同):
>>> left == right
invoked L.__eq__
False
现在右侧侧获得第一次比较。
class R(L):
为什么?它在哪里记录,以及设计决策的原因是什么?
答案 0 :(得分:18)
这是在页面下方的numeric operations下记录的,并解释了为什么它以这种方式运作:
注意:如果右操作数的类型是左操作数类型的子类,并且该子类提供了操作的反射方法,则此方法将在左操作数的非反射方法之前调用。此行为允许子类覆盖其祖先的操作。
Python 3 documentation在您正在查看的部分中另外提到它:
如果操作数的类型不同,并且右操作数的类型是左操作数类型的直接或间接子类,则右操作数的反射方法具有优先级,否则左操作数的方法具有优先级。不考虑虚拟子类化。