混合属性
hybrid-attributes的Python项目详细描述
混合属性实现混合属性和混合方法 描述符,在类和实例中调用底层函数 上下文
假设你有一个类:
class Foo: @classmethod def spam(self): return 'spam' @property def eggs(self): return 'eggs' def ham(self): return 'ham'
您可以通过在类上调用.spam()来获取返回的值,访问 '.eggs'或对实例调用.ham():
>>> Foo.spam() 'spam' >>> foo = Foo() >>> foo.eggs 'eggs' >>> foo.ham() 'ham'
如果您在不同的上下文中访问它们,.spam()仍然是 以类作为第一个参数调用,。eggs将返回一个属性对象 只有对内省和.ham()有用时才会引发异常,因为 没有可调用的实例。
混合属性是不同的。他们不关心对象是否被访问 通过,将始终使用任何对象调用底层函数 正在访问以这门课为例:
class HybridFoo: @hybrid_property def spam(self): return 'spam' @hybrid_method def eggs(self): return 'eggs'
您可以访问属性并在类或实例上调用方法:
>>> Foo.spam 'spam' >>> Foo.eggs() 'eggs' >>> foo = Foo() >>> foo.spam 'spam' >>> foo.eggs
混合属性是bsd许可的,可用于python 3.4及更高版本。