Skip to content

Instantly share code, notes, and snippets.

@wataken44
Last active January 12, 2020 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wataken44/c7eeeb7a558e96861157f619d8b63755 to your computer and use it in GitHub Desktop.
Save wataken44/c7eeeb7a558e96861157f619d8b63755 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
""" class_helper.py
"""
import sys
def main():
check = False
if sys.argv[1] == "-c":
check = True
kn = sys.argv[1]
params = sys.argv[2:]
if check:
kn = sys.argv[2]
params = sys.argv[3:]
print("class %s(object):" % kn)
print(" def __init__(self, %s):" % ", ".join(params))
for param in params:
print(" self._%s = %s" % (param, param))
if check:
print("")
print(" self._changed = False")
print("")
print(" @staticmethod")
print(" def from_dict(source):")
for param in params:
print(" %s = source[\"%s\"]" % (param, param))
print("")
print(" return %s(%s)" % (kn, ", ".join(params)))
print("")
print(" def to_dict(self):")
print(" return {")
for param in params:
print(" \"%s\": self._%s," % (param, param))
print(" }")
print("")
print(" def assign(self, source):")
for param in params:
print(" self.%s = source[\"%s\"]" % (param, param))
if check:
print("")
print(" def is_changed(self):")
print(" return self._changed")
print("")
print(" # properties")
print("")
for param in params:
print(" def get_%s(self):" % param)
print(" return self._%s" % param)
print("")
print(" def set_%s(self, %s):" % (param,param))
if check:
print(" self._changed = self._changed or (self._%s != %s)" % (param, param))
print(" self._%s = %s" % (param,param))
print("")
print(" %s = property(get_%s, set_%s, None, \"\")" % (param, param, param))
print("")
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment