Empty class object in Python
You could also use "named tuples" from the collection
standard module. Named tuples work like "ordinary" tuples but the elements have names and you can access the elements using the "dot syntax". From the collection docs:
>>> # Basic example
>>> Point = namedtuple('Point', ['x', 'y'])
>>> p = Point(11, y=22) # instantiate with positional or keyword arguments
>>> p[0] + p[1] # indexable like the plain tuple (11, 22)
33
>>> x, y = p # unpack like a regular tuple
>>> x, y
(11, 22)
>>> p.x + p.y # fields also accessible by name
33
>>> p # readable __repr__ with a name=value style
Point(x=11, y=22)
Try with lambda
:
john.greet = lambda : print( 'hello world!' )
The you'll be able to do:
john.greet()
EDIT: Thanks Thomas K for the note - this works on Python 3.2
and not for Python2, where print
appeared to be statement
. But this will work for lambda
s, without statements (right? Sorry, I know only python3.2
(: )
A class is more or less a fancy wrapper for a dict
of attributes to objects. When you instantiate a class you can assign to its attributes, and those will be stored in foo.__dict__
; likewise, you can look in foo.__dict__
for any attributes you have already written.
This means you can do some neat dynamic things like:
class Employee: pass
def foo(self): pass
Employee.foo = foo
as well as assigning to a particular instance. (EDIT: added self
parameter)