Skip to content

Instantly share code, notes, and snippets.

@Weizhang2017
Created December 6, 2019 01:53
Show Gist options
  • Save Weizhang2017/b51070ec10d3c5acb3692723b662f8a0 to your computer and use it in GitHub Desktop.
Save Weizhang2017/b51070ec10d3c5acb3692723b662f8a0 to your computer and use it in GitHub Desktop.
A function to avoid repetitive property method
def typed_property(name, expected_type):
storage_name = '_' + name
@property
def prop(self):
return getattr(self, storage_name)
@prop.setter
def prop(self, value):
if not isinstance(value, expected_type):
raise TypeError(f'{name} must be a {expected_type}')
setter(self, storage_name, value)
return prop
class Person:
name = typed_property('name', str)
age = typed_property('age', int)
def __init__(self, name, age):
self.name = name
self.age = age
if __name__ == '__main__':
person = Person(1232, 'dsfds')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment