混合属性

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@Override   使用BuffereImage加载映像时java高ram使用率   java For循环混乱,为什么不是循环?   java Android网格视图字符串对齐问题   java如何将方法与比较类型的附加功能进行比较?   在Java Swing中放置JSepator后的间隙大小   java如何避免并发访问我的网站中的支付链接   java如何从现有的Unix服务器连接到FTP服务器?   Spring中的java用户相关bean定义   带有scribesjava库的wordpress Woocommerce REST API返回消费者密钥参数缺失错误消息   java我可以自动检测特定设备连接的串行端口吗?   Javafx棋盘游戏   java使用JTextPane显示HTML,支持SVG吗?   SpringBoot如何在java中将映射转换为实体对象?   如何使用java代码对xls文件进行密码保护   Java JPA(EclipseLink)如何在持久化实际实体之前接收下一个生成的值?   Javaservlet启动外部进程