A flexible interface for any class would be when
For example:
All parameters and parameter names are put in an array.
a=array('Username'->'peter','password'->'mypassword','e_mail'->'[email protected]');
An object is initialized like.
user.init(a)
The idea is that any object can be initialized by the same function init() with an array a as atribute.
(this is a draft page) please add some ideas, fix my poor english
Python functions often do this. The
keyword arguments may also be mixed with
normal arguments and default values for the
normal arguments, e.g.:
>>> def foo(first=True, **kwargs):
... print "%s, %s" % (str(first), str(kwargs))
...
>>> foo()
True, {}
>>> foo(False)
False, {}
>>> foo(foo=1)
True, {'foo': 1}
>>> foo(foo=1, bar=2)
True, {'foo': 1, 'bar': 2}
>>> foo(False, foo=1, bar=2)
False, {'foo': 1, 'bar': 2}
The
kwargs name refers to a dictionary, and dictionaries support default values for non-existent keys. This makes it possible to write code like:
def foo(**kwargs):
name = kwargs.get('name', "Default User")
...
This is a relatively clean way of writing semi-polymorphic functions that support an arbitrary number of key=value pairs.