If you control the class, you can implement your own by making each public field settable from the comstructor, with a default value Here's an example (in Python3) for an object with foo and bar fields:
class MyThing:
def __init__(self, foo=None, bar=None):
self.foo = foo
self.bar = bar
We can instantiate the class above with a series of named arguments corresponding to the class values.
thing = MyThing(foo="hello", bar="world")
# Prints "hello world!"
print("{thing.foo} {thing.bar}!")
Update 2017 The easiest way to do this is to use the attrs library
import attr
@attr.s
class MyThing:
foo = attr.ib()
bar = attr.ib()
Using this version of MyThing just works in the previous example. attrs gives you a bunch of dunder methods for free, like a constructor with defaults for all public fields, and sensible str and comparison functions. It all happens at class definition time too; zero performance overhead when using the class.
var:var myObject = new ....ObjecttoSomeClassbecause in its original form, that was a compiler error.