> I do remain a bit surprised that there seems to be no way to implement > what I naively thought would be the obvious solution -- to remove an > inherited method from the instance's dictionary.
Hi Brian, If we're trying to do this, we probably don't want to "inherit" from a parent. A subclass child is supposed to have, at the very least, the same public methods as its parent. For example, if we have a: ###### class Account: def __init__(self, amount): self.amount = amount def withdraw(self, x): assert x > 0 self.amount = self.amount - x def report(self): print "You have ", self.amount, "dollars" ####### And we'd like to reuse this, but for something that doesn't report itself, we shouldn't use inheritance: ####### class SecretAccount(Account): def report(self): pass ####### This SecretAccount is now pretending to be an account that doesn't have a usable report() method. ####### >>> Account(5).report() You have 5 dollars >>> SecretAccount(5).report() >>> ####### But we can get into trouble again, if, later on, Account is expanded to have a few more additional functions: ###### class Account: ## version 2 # [same as before] def htmlReport(self): print ("<html><body><p>You have %d dollars</p></body></html" % self.amount) ###### And now, suddenly, SecretAccount again has a method that shows information that it probably doesn't want out in the open. The issue that that SecretAccount is really not trying to be an "Account": it's just trying to reuse its functionality. Instead of doing things with inheritance, we're probably looking for delegation: ####### class SecretAccount: def __init__(self, amount): self.account = Account(amount) def withdraw(self, x): self.account.withdraw(x) ####### And now we're more isolated from changes to the Account class. There are some more Pythonic idioms to make delegation easier to code. And the example above is hideously toyish. *grin* But I hope the idea's a little clearer: inheritance ties the subclass down to at least what the superclass has promised, and in many cases, that's not what we want. Best of wishes! _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor