Python Forum
iterate over class properties?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
iterate over class properties?
#1
is there a way to iterate over python property descriptors rather than __dict__ attributes?

import datetime
from datetime import date
from datetime import datetime as dt

class videofile:
    def __init__(self):
        self._date = date.today()
        self._dateadded = dt.now()
        self._title = 'New Title'
        self._plot = ''

    @property
    def title(self):
        return self._title

    @title.setter
    def title(self, value):
        self._title = value

    @property
    def plot(self):
        return self._plot

    @plot.setter
    def plot(self, value):
        self._plot = value



    @property
    def dateadded(self):
        return self._dateadded

    @dateadded.setter
    def dateadded(self, value):
        self._dateadded = value

class movie(videofile):

    def __init__(self):
        super(movie,self).__init__()
        self._outline = ''

    @property
    def outline(self):
        return self._outline

    @outline.setter
    def outline(self, value):
        self._outline = value


    @property
    def premiered(self):
        return self._date

    @premiered.setter
    def premiered(self, value):
        self._date = value


class tvepisode(videofile):

    def __init__(self):
        super(tvepisode,self).__init__()
        self._season = -1
        self._episode = -1
        self._absolute = -1

    @property
    def season(self):
        return self._season

    @season.setter
    def season(self, value):
        self._season = value

    @property
    def episode(self):
        return self._episode

    @episode.setter
    def episode(self, value):
        self._episode = value

    @property
    def absolute(self):
        return self._absolute

    @absolute.setter
    def absolute(self, value):
        self._absolute = value

    @property
    def aired(self):
        return self._date

    @aired.setter
    def aired(self, value):
        self._date = value
I want to iterate over the user values (to eventually shove them into an xml)
which i know i can do by iterating over the instance's dictionary

movieitem = movie()
movieitem.title = 'Avengers: Infinity War'
movieitem.premiered = date(2018,4,27)
movieitem.plot = 'The Avengers and their allies must be willing to sacrifice all in an attempt to defeat the powerful Thanos before his blitz of devastation and ruin puts an end to the universe.'

for attribName, attribValue in movieitem.__dict__.items():
    if isinstance(attribValue, str):
        print(attribName + ': ',attribValue )
    elif isinstance(attribValue,date):
        print(attribName + ': ',attribValue.strftime('%Y-%m-%d'))
    elif isinstance(attribValue,dt):
        print(attribName + ': ',attribValue.strftime('%Y-%m-%d %H:%M:%S'))
    else:
        print(attribName + ': ', str(attribValue))
the code above produces:

Output:
_title: Avengers: Infinity War _date: 2018-04-27 _dateadded: 2018-08-26 05:33:21 _outline: _plot: The Avengers and their allies must be willing to sacrifice all in an attempt to defeat the powerful Thanos before his blitz of devastation and ruin puts an end to the universe
.

the problem is that some of the user values are reused for different property names which is how i want them defined in the output... so is there a way to iterate over only properties instead of __dict__ attributes for instance, the self._date is used to for different properties in movies (premiered) and tvepisodes (aired)
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,174 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,467 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