Fredrik Lundh wrote:
Aigars Aigars wrote:
>
>
>I want MyClass to perform some tests and if them fail, I do not want
>instance to be created.
>instance to be created.
a custom .__new__ method, but that is tricky, something I would have to
look up how to do, and most likely not needed. Fredrik's solution below
is much easier and the one I would use if at all possible.
>But in code I wrote instance is created and also has parameters, that
>it should not have in case of tests failure.
>>
>Is there a way to perform tests in MyClass.__init_ _ and set instance
>to None without any parameters?
>it should not have in case of tests failure.
>>
>Is there a way to perform tests in MyClass.__init_ _ and set instance
>to None without any parameters?
if you want construction to fail, raise an exception.
>
...
>
def __init__(self):
'self'. Usually, its only individual attributes are (in 3.0, anyway, as
far as I can tell) .__class__ and an empty .__dict__. Of course, it
inherits class and superclass attributes, but it is otherwise blank.
(The main exception would be if you were inheriting from an immutable
class that set attributes in .__new__, but then you would not be writing
..__init__.)
self.param = "spam"
Test = False
if Test: # please don't use explicit tests for truth
print "Creating instance..."
else:
raise ValueError("som e condition failed")
>
(pick an exception class that matches the actual error, or create your
own class if necessary)
Test = False
if Test: # please don't use explicit tests for truth
print "Creating instance..."
else:
raise ValueError("som e condition failed")
>
(pick an exception class that matches the actual error, or create your
own class if necessary)
gets unbound from 'self' and since it does not get bound to anything
else, it becomes eligible for garbage collection.
tjr