Getting the "dir" from the other ancestor ?
Stef Mientki
stef.mientki at gmail.com
Tue Apr 28 11:58:02 EDT 2009
tuxagb wrote:
> On 28 Apr, 15:01, Stef Mientki <stef.mien... at gmail.com> wrote:
>
>> hello,
>>
>> I have a class, derived from some user defined class
>> (User_Defined_Ancestor) and some basic class (Basic_Ancestor).
>>
>> One of the major tasks of the Basic_Ancestor,
>> is to hide all kinds of implementation details for the user,
>> so the user can concentrate on the functional design.
>>
>> One of things I need to know are the methods and attributes of the
>> Basic_Ancestor.
>> Both classes are dynamic, i.e. attributes are added during run time.
>>
>> class Master ( User_Defined_Ancestor, Basic_Ancestor ) :
>> def __init__ ( self, *args, **kwargs ) :
>> Basic_Ancestor.__init__ ( self, *args, **kwargs )
>> .....
>>
>> class Basic_Ancestor ( object ) :
>> def __init__ ( self, .... ) :
>> self.other = dir ( User_Defined_Ancestor )
>>
>> def Get_Attributes ( self ) :
>> return dir ( self ) - dir ( self.other )
>>
>> Now the problem is, I don't know "User_Defined_Ancestor" in Basic_Ancestor.
>> I can't pass it through the parameter list, because I use "*args, **kwargs"
>> I possibly could use some global variable, but that's not my preference.
>>
>> Any other suggestions ?
>>
>> thanks,
>> Stef Mientki
>>
>
> In anytime, if you do dir() in a class B, that extends a class A, you
> have all fields of A also.
>
That's exactly the problem I encounter ;-)
After some trial and error, I found this solution:
class Basic_Ancestor ( object ) :
def __init__ ( self, .... ) :
# Collect all methods and attributes of other classes
self.Exclude_Dir = []
Base_Classes = self.__class__.__bases__
for BC in Base_Classes :
if BC != My_Control_Class :
self.Exclude_Dir += dir ( BC )
cheers,
Stef
More information about the Python-list
mailing list