Forked from ericelliott/stamp-utils-bar-usage-example.js
Last active
March 9, 2017 16:15
-
-
Save jorendorff/9257de148784acdd884d5388755abb17 to your computer and use it in GitHub Desktop.
stamp-utils bar usage example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Some more privileged methods, with some private data. | |
class Availability: | |
def __init__(self): | |
self._is_open = False | |
def open(self): | |
self._is_open = True | |
def close(self): | |
self._is_open = False | |
def is_open(self): | |
return self._is_open | |
# Here's a class with public methods, and some state: | |
class Membership: | |
def __init__(self): | |
self.members = {} | |
def add(self, member): | |
self.members[member.name] = member | |
def get_member(self, name): | |
return self.members.get(name) | |
# Let's set some defaults: | |
class Defaults: | |
def __init__(self): | |
self.name = 'The Saloon' | |
self.specials = 'Whisky, Gin, Tequila' | |
class Overrides: | |
def __init__(self, **kwargs): | |
self.__dict__.update(kwargs) | |
# Classical inheritance has nothing on this. No parent/child coupling. | |
# No deep inheritance hierarchies. | |
# Just good, clean code reusability. | |
class Bar(Availability, Membership, Defaults, Overrides): | |
def __init__(self, **kwargs): | |
Availability.__init__(self) | |
Membership.__init__(self) | |
Defaults.__init__(self) | |
Overrides.__init__(self, **kwargs) | |
my_bar = Bar(name="Moe's") | |
# Silly, but proves that everything is as it should be. | |
print(f""" | |
name: { my_bar.name } | |
is_open: { my_bar.is_open() } | |
specials: { my_bar.specials } | |
""") | |
# name: Moe's | |
# is_open: true | |
# specials: Whisky, Gin, Tequila |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment