02.07.20 13:26, Greg Ewing пише:
On 2/07/20 8:04 pm, Serhiy Storchaka wrote:
It has a problem with pickling (it is solvable).

Can you elaborate? The end result is a property object just the
same as you would get from using @property or calling property
directly. I don't see how it can have any pickling problems
beyond what properties already have.

You are right since property objects currently are not pickleable by default. But it is possible to implement pickling support for property objects which will fail with your example (and I think third-party libraries do it). The difference is that full qualified names of getter and setter differ from the full qualified name of the property. It is solvable, but it may require more complex code.

The larger problem is with using private (double underscored) variables and super().

I don't know what you're talking about here. I didn't use any
double-underscore names in my example.

Then try to use them. It would not work.

class Test2:
    def __init__(self):
        self.__foo = 1
    class foo(metaclass = Property):
        def get(self):
            return self.__foo

Test2().foo


class Test3Base:
    @property
    def foo(self):
        return 1

class Test3(Test3Base):
    class foo(metaclass = Property):
        def get(self):
            return super().foo + 1

Test3().foo
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/NGYNDVVQECY2KI6LVC7DUAHJ2IYQKT54/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to