Örnek argümanı kullanarak kendini örnek olarak bir dekoratör olarak bir decorator kullanarak örnek kodları süslemek için aşağıdaki kodu kullanarak geldim:Python: Örnek özniteliklerini örnek yöntemlerle dinamik olarak atama ile ilgili bir sorun var mı?
from functools import wraps
def logging_decorator(tricky_instance):
def wrapper(fn):
@wraps(fn)
def wrapped(*a, **kw):
if tricky_instance.log:
print("Calling %s.." % fn.__name__)
return fn(*a, **kw)
return wrapped
return wrapper
class Tricky(object):
def __init__(self, log):
self.log = log
self.say_hi = logging_decorator(self)(self.say_hi)
def say_hi(self):
print("Hello, world!")
i1 = Tricky(log=True)
i2 = Tricky(log=False)
i1.say_hi()
i2.say_hi()
Bu harika çalışıyor, ama korkarım ki yanıltıcı bazı yan etkileri gözden kaçmış olabilirim Bu hile. Kendimi yürüyerek vurmak mıyım yoksa bu güvenli mi?
Bunu aslında kayıt için kullanmak istemediğimi unutmayın, bu benim gelebileceğim en kısa anlamlı örnek.
Yasal olarak görünüyor. Benim nacizane fikrime göre. – Evpok