混合属性

hybrid-attributes的Python项目详细描述


Travis CI StatusCodecov StatusDocumentation

混合属性实现混合属性混合方法 描述符,在类和实例中调用底层函数 上下文

假设你有一个类:

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及更高版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Cassandra复制因子大于节点数   java J2EE JTA事务回滚不适用于OSE Glassfish 4.0(Build 89)   java spring安全预认证用户登录   org的java类文件。反应流。从RxJava编译示例时未找到Publisher?   java在使用dataFormat作为POJO通过Camel调用Web服务时无法设置SOAP标头   Javafx类的java静态实例   java如何防止一个部件在关闭时覆盖另一个部件的位置   sql server无法从我的java代码连接到数据库   java在JList(Swing)中显示带有的ArrayList   从Java中的CXF服务获取WSAddressing数据   使用资产文件夹进行java简单json解析(本地)   java LDAPException未绑定的无效凭据   JavaJSFspring部署到weblogic   JAVA中字符数组中的特定元素排列?   如果脚本位于不同的目录中,则ant不会使用exec标记运行Javashell脚本