Python Forum
iterate over class properties?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
iterate over class properties?
#6
It would perhaps be better to unpack my function a little. I don't claim it is the best way to do this, but I'm going to explain the following code
import inspect

def _get_names(cls):
    for tp in inspect.getmro(cls):
        for name, value in vars(tp).items():
            if isinstance(value, property):
                yield name

_register = {}

def property_names(cls):
    if cls not in _register:
        _register[cls] = sorted(set(_get_names(cls)))
    return _register[cls]


def add_property_names(cls):
    cls.property_names = classmethod(property_names)
    return cls

if __name__ == '__main__':
    class A:
        pass

    class B(A):
        @property
        def foo(self):
            return 0
        
    class C(B):
        @property
        def bar(self):
            return self._bar
        
        @bar.setter
        def bar(self, value):
            self._bar = value

    add_property_names(A)

    a = A()
    print(a.property_names())
    c = C()
    print(c.property_names())
    cc = C()
    print(cc.property_names())
Reply


Messages In This Thread
iterate over class properties? - by NobahdiAtoll - Aug-26-2018, 10:44 AM
RE: iterate over class properties? - by Gribouillis - Aug-26-2018, 03:21 PM
RE: iterate over class properties? - by Gribouillis - Aug-26-2018, 07:02 PM
RE: iterate over class properties? - by Gribouillis - Aug-26-2018, 07:26 PM
RE: iterate over class properties? - by Gribouillis - Aug-26-2018, 07:46 PM
RE: iterate over class properties? - by Gribouillis - Aug-26-2018, 08:21 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  PDF properties doesn't show created or modified date Pedroski55 4 1,176 Jun-19-2023, 08:09 AM
Last Post: Pedroski55
  How do I list properties quarinteen 0 1,087 May-01-2022, 04:15 PM
Last Post: quarinteen
  API design question: use methods or properties? johsmi96 1 1,723 Oct-12-2020, 02:24 PM
Last Post: buran
  Create a 3D volume with some properties. Rosendo 0 1,468 Jul-18-2020, 08:20 PM
Last Post: Rosendo
  printing class properties from numpy.ndarrays of objects pjfarley3 2 1,997 Jun-08-2020, 05:30 AM
Last Post: pjfarley3
  adding properties to variables rudihammad 0 1,714 May-06-2020, 05:09 AM
Last Post: rudihammad
  Advance properties read from xml files python1234 0 2,453 Apr-25-2018, 01:42 PM
Last Post: python1234

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020