shlax/podctl/visitable.py
2020-02-13 04:53:09 +01:00

25 lines
684 B
Python

import asyncio
from copy import copy, deepcopy
class Visitable:
default_scripts = dict()
def __init__(self, *visitors, **scripts):
self.visitors = list(visitors)
self.scripts = deepcopy(self.default_scripts)
self.scripts.update(scripts)
def visitor(self, name):
for visitor in self.visitors:
if name.lower() in (
type(visitor).__name__.lower(),
getattr(visitor, 'name', '')
):
return visitor
def variable(self, name):
for visitor in self.visitors:
if getattr(visitor, name, None) is not None:
return getattr(visitor, name)