[Baypiggies] Descriptors with metaclasses don't quite seem to work

Aseem Mohanty ams.fwd at gmail.com
Thu Jan 3 01:38:52 EST 2019


Hi All.

I have the following code where I am adding a metaclass to a descriptor.
This is a reduction case so the metaclass really does nothing.

Running this with python3 does not appear to trigger the descriptors
__get__ or __set__. Without the metaclass things work as expected. I am not
exactly sure why having the metaclass would not work as all the attributes
for the descriptor appear to be preserved.

Any help would be greatly appreciated.

TIA
AM


#!/usr/bin/env python
# -*- coding: utf-8 -*-

class Meta(type):

    def __init__(cls, name, bases, attrs):
        print('meta init')
        super().__init__(name, bases, attrs)

    def __call__(cls, *args, **kwargs):
        print('meta call')
        inst = super().__call__()

class X(metaclass=Meta):

    def __init__(self):
        print('init X')
        self._val = None

    def __get__(self, obj, obj_type):
        print('getting value')
        return self._val

    def __set__(self, obj, value):
        print('-- setting value')
        self._val = value

class M:
    x = X()

m = M()
m.x = 1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/baypiggies/attachments/20190102/68bdb152/attachment.html>


More information about the Baypiggies mailing list