Überschreiben Sie die Eigenschaft von Wrapper ClassPython

Python-Programme
Guest
 Überschreiben Sie die Eigenschaft von Wrapper Class

Post by Guest »

Ich habe eine Klasse A mit einer Eigenschafts -Requisite und einer Methode, die diese Eigenschaft verwendet: < /p>

Code: Select all

class A:
@property
def prop(self) -> int:
return 1

def method(self) -> int:
return self.prop * 2  # Uses self.prop
< /code>
Dann habe ich eine Wrapper -Klasse, die versucht, diese Eigenschaft wie folgt zu überschreiben: < /p>
class B:
def __init__(self, a: A):
self._a = a

@property
def prop(self) -> int:
return 2  # Override A's property

def __getattr__(self, attr):
if attr in self.__dict__:
return getattr(self, attr)

return getattr(self._a, attr)  # Delegate attribute access to A if attr not in B
< /code>
Wenn B.Method () aufgerufen wird, möchte ich, dass die Berechnung mit Bs Requisite durchgeführt wird und 4 als Ergebnis erhalten. Was stattdessen passiert, ist, dass die Prop innerhalb von a auflöst, und b.Method () gibt 2. < /P>
zurückb = B(a)

b.method() # Returns 2. Wanted 4
< /code>
Gibt es eine Möglichkeit, die Eigenschafts -Requisite in a zu überschreiben, wenn sie in A's Code verwendet wird, wenn sie von b? < /p>
 < Br /> [*] Ich kann die Vererbung für diese Klassen nicht verwenden < /li>
 Ich möchte vermeiden, dass die Methode () Logik in B < /li>
 Ich habe auch versucht, __GetAttribute __ 
in B festzulegen, aber es scheint nicht einmal aufgeladen zu werden, wenn sie die Prop in a

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post