какая альтернатива вложенным классам в Python - PullRequest
2 голосов
/ 15 июля 2011

Я прочитал пост о том, что «вложенные классы не были pythonic», что альтернатива

пожалуйста, прости меня, это не лучший пример, но это основная концепция. вложенный класс для выполнения задачи. Мне в основном приходится подключаться к службе в нескольких потоках.

import threading, imporedlib

class Mother(threading.Thread):
    def __init__(self,val1,val2):
        self.VAL1 = val1
        self.VAL2 = val2
    def connectandrun():
        for i in range(5):
            Child.run(i)
    class Child:
        def run(self):
            importedlib.runajob(Mother.VAL1, Mother.VAL2)

1 Ответ

7 голосов
/ 15 июля 2011

Вы хотите использовать композицию:

import threading, importedlib

class Child:
    def __init__(self, parent):
        self.parent=parent

    def run(self):
        importedlib.runajob(parent.VAL1, parent.VAL2)



class Mother(threading.Thread):
    def __init__(self,val1,val2):
        self.VAL1 = val1
        self.VAL2 = val2

    def connectandrun():
        c= Child(self)
        for i in range(5):
            c.run(i)

Конечно, имена «Мать» и «Ребенок» здесь больше не подходят, но вы поняли.

...