git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

What's the purpose the hook method showing in a class definition?


Am 19.10.2019 um 13:11 schrieb jfong at ms4.hinet.net:
> For the two examples below:
> (1)
>>>> class A:
> ...     def foo(self):
> ...         self.goo()
> ...
>>>> class B(A):
> ...     def goo(self):
> ...         print(1)
> ...
> 
> (2)
>>>> class A:
> ...     def foo(self):
> ...         self.goo()
> ...     def goo(self): pass
> ...
>>>> class B(A):
> ...     def goo(self):
> ...         print(1)
> ...
> 
> Both can get the same result:
>>>> b = B()
>>>> b.foo()
> 1
>>>>
> 
> What's the benefit of having the hook method goo() in class A in example 2?
> 
> --Jach
> 
None - as long as nobody tries one of those:

a = A()
a.foo()

or

class C(A):
     def foo(self):
         super().foo()
         print(2)

c = C()
c.foo()