Welcome, guest | Sign In | My Account | Store | Cart
# a function makes the idiom available
# non-invasively, everywhere:
def empty_copy(object):
    class Empty: pass
    newcopy = Empty()
    newcopy.__class__ = object.__class__
    return newcopy

# now your class can easily use this function
class YourClass:
    def __init__(self):
        print "assume there's a lot of work here"
    def __copy__(self):
        newcopy = empty_copy(self)
        print "now you can easily copy a relevant"
        print "subset of self's attributes to newcopy"