Steve Holden wrote:
> Andrea Gavana wrote:
>> The class "Custom" has a lot of methods (functions), but the user 
>> won't call
>> directly this class, he/she will call the MainClass class to construct 
>> the
>> GUI app. However, all the methods that the user can call refer to the
>> "Custom" class, not the MainClass class. That is, the methods that the 
>> user
>> call should propagate to the "Custom" class. However, I know I can do:
>>
>> # Inside MainClass
>>     def SomeMethod(self, param):
>>         self.customwidget.SomeMethod(param)
>>
> It seems that what you need is a generic delegation.
> 
> This pattern (in Python, anyway) makes use of the fact that if the 
> interpreter can't find a method or other attribute for an object it will 
> call the object's __getattr__() method.

Another alternative is to delegate specific method by creating new attributes 
in MainClass. In MainClass.__init__() you can write
  self.SomeMethod = self.customwidget.SomeMethod
to automatically delegate SomeMethod. You can do this from a list of method 
names:
  for method in [ 'SomeMethod', 'SomeOtherMethod' ]:
    setattr(self, method, getattr(self.customwidget, method))

This gives you more control over which methods are delegated - if there are 
some Custom methods that you do *not* want to expose in MainClass this might be 
a better approach.

Kent
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to