Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class DictIter:
- def __iter__(self):
- yield from sorted(self._iter())
- def _iter(self):
- for k,v in self.__dict__.items():
- if k.startswith('_'):
- continue
- if isinstance(v, self.__class__.__bases__):
- yield k, dict(v)
- else:
- yield k, v
- for k, v in self.__class__.__dict__.items():
- if isinstance(v, property):
- yield k, v.fget(self)
- @property
- def dict(self):
- return dict(self)
- class Base(DictIter):
- pass
- class Motor(Base):
- def __init__(self, mode, start, stop):
- self.mode = mode
- self.start = start
- self.stop = stop
- class State(Base):
- bitrates = {br: 37.5 * br for br in range(1, 5)}
- def __init__(self):
- self.motor = Motor('sector', 0, 360)
- self._bitrate = 4
- self._resolution = self.bitrates[self._bitrate]
- @property
- def bitrate(self):
- return self._bitrate
- @bitrate.setter
- def bitrate(self, value):
- print(value)
- self._bitrate = value
- s = State()
- dict(s)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement