policy 在做权限校验的时候 在GenericCheck类中有这么一句
match = self.match % target
因为match 形如 “%(project_id)”
所以这里铁定认为target是一个字符串, 然而~
在server_start_stop.py 这里传入的target分明是一个返回的对象,我一脸懵逼
各种测试发现 % 符号 后面跟上一个字典{}中只要有前面的要求键也会完成语句
如果没有回抛出一个异常
可是这还是和这个对象没有关系啊~~
然后发现这个对象多重继承的时候 继承了一个神奇的类
class NovaObjectDictCompat(object)
这个类里面重写了 __getitem__ 方法
所以可以完成match = self.match % target 这个语句~