Hi,

I've been adding a hybrid property to a model as per the documentation at 
http://docs.sqlalchemy.org/en/latest/orm/extensions/hybrid.html. In 
particular, the behavior is complicated enough that I need to define the 
expression version of the property separate from the normal version.

My model looks like this:

class MyModel(object):
    # ...

    @hybrid_property
    def my_property(self):
        # Do some stuff at the instance level

    @my_property.expression
    def my_property(cls):
        # Do some stuff at the class level


This works as expected, but if I change the name of the class function it 
suddenly stops working - based on the error it seems like the renamed class 
function is being ignored and the instance function is being used instead. 
Weirdly, this does not happen when using hybrid methods rather than 
properties - so the following works as expected:

class MyModel(object):
    # ...

    @hybrid_method
    def my_property(self):
        # Do some stuff at the instance level

    @my_property.expression
    def my_property_expression(cls):
        # Do some stuff at the class level

This is confusing - from the look of the code, the two decorators seem to 
work in the same way, so I am not sure why the renaming matters to the 
property and not the method. Is this expected behaviour?

Thanks,

James




-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to