MyClass
zurückgegeben wird, die unten definiert ist, akzeptiert ein einzelnes Argument arg
.So geben Sie None zurück, während die Klasseninstanz
class MyClass(object):
def __init__(self, arg):
super(MyClass, self).__init__()
if not isinstance(arg, int):
return None
else:
self.arg = arg
Wenn das eingehende Argument arg
nicht eine ganze Zahl ist, würde Ich mag keine Rückkehr statt der Instanz von MyClass
.
a = MyClass(arg='Text Argument')
Aber auch während MyClass
Konstruktor __init__
None zurückgibt, wenn die arg
die resultierende Variable a
ist immer noch eine Instanz von MyClass
nicht eine ganze Zahl ist:
print a
<__main__.MyClass object at 0x0000000001FDEFD0>
Wie sicherzustellen, dass die Variable a
None
bleibt, wenn MyClass
ist ein nicht ganzzahliges Argument gegeben?
Das explizite Zurückgeben von 'None' ist OK (oder einfach' return' von selbst), da dies standardmäßig geschieht. Sie könnten es früh tun, um die '__init __()' -Methode zu verlassen, nehme ich an, aber das hat keinen Einfluss darauf, ob die Instanz erzeugt wird oder nicht - nur möglicherweise der Anfangszustand, den sie hat. – martineau
Wahr, das war etwas mehrdeutig formuliert. Ich meinte * wenn der Rückgabewert einen Unterschied machen würde, solltest du es immer noch nicht machen. * – deceze
Egal was du meintest, mein Punkt war, dass das was du sagst nicht genau ist: Es ist nicht nur möglich, es ist denkbar ein Grund, dies zu tun, wohl wissend, dass es nicht verhindert, dass die Instanz erstellt wird.Was scheint nicht zu sein, was das OP erreichen möchte. – martineau