Last active
August 29, 2015 14:17
-
-
Save eatonphil/4fc6d081f53eedb9a4c4 to your computer and use it in GitHub Desktop.
Javascript-Style Objects in Python
This file contains 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
# After spending too much time away from Python on Javascript, I gave this a shot. To my surprise, it worked! | |
# Since Python doesn't bind "self" implicitly in classes, this looks pretty similar to Python classes. | |
# You want inheritance? Pass in the Parent "class" and copy the key/vals a la Javascript. | |
# Even adding dot syntax is not too tough. | |
def Cat(legs, colorId, name): | |
def sayHi(): | |
print 'Hi, my name is %s. I have %s legs and am %s.' % (this['name'], this['legs'], this['color']) | |
this = { | |
'legs': legs, | |
'color': ['black', 'brown'][colorId], | |
'name': name, | |
'sayHi': sayHi | |
} | |
return this | |
myCat = Cat(4, 0, 'Joey') | |
hisCat = Cat(3, 1, 'Bill') | |
myCat['sayHi']() # Joey | |
hisCat['sayHi']() # Bill |
Functions in python are actually objects.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
So much for "There should be one-- and preferably only one --obvious way to do it."...