python (2.7): доступ к свойству класса с помощью декоратора классов - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь получить доступ к экземпляру класса (назовите его 'a'), который передается второму классу (назовите его 'b').Я намерен получить доступ к экземпляру «а», украсив класс экземпляра b, чтобы я мог настроить некоторые фоновые задачи потоков на «а», но при этом использовать «b» для других более важных задач.Это возможно?

import threading    
import inspect

Class doStuff():
    def __init__(self, somePropertyFromAnotherClass):
        self.lock = threading.Lock()
        self.prop = somePropertyFromAnotherClass

    def doCoolThreadingStuff():
        print("do threading stuff with {}".format(self.prop))


def someDecorator(cls):
    def wrapper(cls):
        print(inspect.getrgspec(cls.__init__))
        #ds = doStuff()  ## this is the bit that i can't figure out!
    wrapper(cls)
    return cls


Class A():
    def __init__(self):
        self.obj = "i'm an object" 


@someDecorator
Class B():
    def __init__(self, obj):
        self.obj = obj

    def doSomethingWithObj():
        print('doing something with obj')


if __name__ == "__main__":
    a = A()
    b = B(a)

1 Ответ

0 голосов
/ 01 сентября 2018

Декоратор был плохо сформирован

def someDecorator(cls_obj):
    def wrapper(*args):
        ds = doStuff(args[0]) # positional : / 
        ds.doCoolThreadingStuff() 
        return cls_obj(*args)
    return wrapper

Я могу использовать приведенное выше определение декоратора для доступа к экземпляру класса A (который передается в класс B)

...