Coder Social home page Coder Social logo

propertyset's Introduction

PropertySet

A Python module to enumerate sets composed of strings, usable as class properties. Or "I wish I was using Haskell and I miss typeclassess, damnit!".

This stops stupid stuff like this:

class States(object):
    enabled = 'enabled'
    disabled = 'disabled'

Instead, you can use PropertySet like so:

from PropertySet import PropertySet

States = PropertySet('States', ['enabled', 'disabled'])

It then behaves like the code above:

>>> States.enabled
'enabled'

But is also representable as a string and enumerable as a list:

>>> States
States { disabled, enabled }
>>> list(States)
['enabled', 'disabled']

PropertySets are iterable and comparable:

>>> 'enabled' in States
True
>>> 'slartibartfast' in States
False
>>> States2 = PropertySet('States2', ['enabled', 'disabled'])
>>> States == States2
False
>>> States2 = PropertySet('States', ['disabled', 'enabled'])
>>> States == States2
True

PropertySets are also immutable:

>>> States.enabled = 'slartibartfast'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "PropertySet.py", line 27, in __setattr__
    raise AttributeError(msg.format(prop, type(self).__name__, self._name))
AttributeError: Cannot set attribute 'enabled' because PropertySet object 'States' is immutable

FAQ

Why shouldn't I just use a frozenset?

I dunno, syntactic sugar? No-one's stopping you, go ahead, see if I care. weeps silently

propertyset's People

Contributors

evoludo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.