Skip to content

Instantly share code, notes, and snippets.

@eatonphil
Last active August 29, 2015 14:17
Show Gist options
  • Save eatonphil/4fc6d081f53eedb9a4c4 to your computer and use it in GitHub Desktop.
Save eatonphil/4fc6d081f53eedb9a4c4 to your computer and use it in GitHub Desktop.
Javascript-Style Objects in Python
# 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
@cessor
Copy link

cessor commented Mar 17, 2015

So much for "There should be one-- and preferably only one --obvious way to do it."...

@JoePython1
Copy link

Functions in python are actually objects.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment