1 #-*-coding:utf-8-*-2 classSuper (object):3 4 defTest (self):5 self.action ()6 7 classSub (Super):8 9 defAction (self):Ten Print "Sub Action" One Aobj=Sub () -Obj.test ()
In the code, a function test is defined in Super class super. Called its own action function. But the action function is not defined in super.
Why is this?
----------------------------------
In this case, the superclass is sometimes called abstract superclass. This means that part of the behavior of a class is provided by a subclass. If the expected method is not defined in the subclass, an exception is thrown that does not have a variable name defined.
----------------------------------
That's why the output from the above code is
Sub action
-------------------------------------
To avoid the subclass forgetting to implement the action function, in the Super class, you can also add the action function and use Assert to prompt the user to overwrite the function.
The code is as follows:
class Super (object): def Test (self): self.action () def Action (self): assert False, "action must be implemented! "
Of course, you can also use the throw exception method in super to implement this hint subclass to override the action function.
The code is as follows:
class Super (object): def Test (self): self.action () def Action (self): Raise Notimplementederror ("action must be implemented! ")
Abstract hyper-class in Python