On Mon, Aug 29, 2016 at 07:03:31PM +0000, [email protected] wrote:
>
>
> Hi:
> If __init__ is not defined in a class, will it be called when creating an
> instance?
Yes, because the default __init__ does nothing. So if you don't need an
__init__, just don't bother to write it! Try experimenting with code
like this at the interactive interpreter:
# Wrong, don't do this:
class MyObject():
def __init__(self):
# Do nothing!
pass
def method(self):
print("called method")
# Better:
class MyObject():
def method(self):
print("called method")
obj = MyObject()
> What in a case if this class inherits from parent with __init__ and without
> __init__?
If you use super(), Python will work out what to do. So long as all the
existing __init__ methods take the same arguments, use super().
If they take different arguments, you can't use super() and have to do
it by hand.
I see you are doing a lot of multiple inheritence (MI). I don't want to
discourage you, but MI is considered an advanced subject. (Most
programming languages don't even support it!) You should make sure you
understand single inheritence and super() very well before tackling MI,
otherwise you're likely to get confused.
In any case, feel free to ask questions or ask for clarifications, and
we'll answer as best we can.
--
Steve
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor