Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added Homework10-1.0.tar.gz
Binary file not shown.
Binary file added Homework10-1.0.win32.exe
Binary file not shown.
Empty file added homework7_8/__init__.py
Empty file.
45 changes: 45 additions & 0 deletions homework7_8/homework7_8.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import re


def generate_properties(args):
"""Generate properties according class arguments

:param args: dict oof class arguments
:return: dict with added properties
"""
suitable_funcs = list(
filter(lambda x: x.startswith(("get", "set", "del")), args))
prop_names_set = {re.search(".*_(.+)", function_name).group(1) for
function_name in suitable_funcs}
for prop_name in prop_names_set:
args[prop_name] = property(args.get("get_{}".format(prop_name)),
args.get("set_{}".format(prop_name)),
args.get("del_{}".format(prop_name)))
return args


class MetaClass(type):
def __new__(mcs, name, bases, args_dict):
args_dict = generate_properties(args_dict)
return type.__new__(mcs, name, bases, args_dict)


class Example(metaclass=MetaClass):
def __init__(self):
self._x = None

def get_x(self):
return self._x

def set_x(self, value):
self._x = value

def get_y(self):
return 'y'


if __name__ == "__main__":
ex = Example()
ex.x = 255
print(ex.x)
print(ex.y)
9 changes: 9 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from distutils.core import setup

setup(
name='Homework10',
version="1.0",
author="Siarhei Parkhomik",
author_email="Siarhei_Parkhomik@epam.com",
packages=["homework7_8"]
)