tobiah <[EMAIL PROTECTED]> writes: > myfoo = Foo('grapes', 'oranges') > > And in the __init__() of Foo, there is a real problem with the > consumption of fruit. Is there a clean way to ensure that myfoo > will be None after the call? Would the __init__() just do > del(self), or is there a better way to think about this?
I'm not sure I understand your goal, but it seems that you want to handle two cases: one where Foo can be properly initialised, and one where it can't -- an error condition. That sounds like a job for exceptions. >>> class ConsumptionError(ValueError): ... """ Exception thrown from bad consumption """ ... >>> class Foo(object): ... def __init__(self, left_thing, right_thing): ... if left_thing == 'grapes': ... raise ConsumptionError("Problem with consumption of fruit") ... >>> myfoo = Foo('zucchini', 'spam') >>> print myfoo <__main__.Foo object at 0x401e446c> >>> myfoo = Foo('grapes', 'oranges') Traceback (most recent call last): File "<stdin>", line 1, in ? File "<stdin>", line 4, in __init__ __main__.ConsumptionError: Problem with consumption of fruit >>> try: ... myfoo = Foo('grapes', 'oranges') ... except ConsumptionError, e: ... myfoo = None ... >>> print myfoo None -- \ Rommel: "Don't move, or I'll turn the key on this can of Spam!" | `\ -- The Goon Show, _Rommel's Treasure_ | _o__) | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list