On 12/05/2013 06:08 PM, Allen Li wrote: > On Thu, Dec 05, 2013 at 01:33:00PM -0800, Guido van Rossum wrote: >> >> Actually if you want to support multiple inheritance of your ABC, your >> abstract methods *must* be no-ops (or have some kind of default >> behavior that can always be done last). Done last or first really depends on what the default behavior is, doesn't it? Using __new__ as an example, the chain of calls for that has the most ancestorish (yeah, I just made that word up ;) method doing the work first, with each less-ancestorish method building on to that as the call chain unwinds. > I must respectfully disagree with this. If your ABCs aren't meant to be > in the MRO, then you should be @registering them as virtual classes and > not inheriting them. Why would you think they are not meant to be in the MRO? When dealing with multiple-inheritance, there must be a base class that does not try to call super() (object does not work for this) -- what better class to use than the base abstract class? > > The trick with Python multiple inheritance and super() (from personal > experience) is to not think of it as multiple inheritance (a tree with > cycles), but as building the MRO (linear, the same as single > inheritance). -- ~Ethan~
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4