0

我遇到了一些奇怪的错误,只是问自己我的类层次结构中是否存在基本问题。如果涉及 python,我绝对是新手。因此,如果这种方法看起来像完全废话 - 你知道为什么会这样:-)

我在围绕 MVC 模式设计的应用程序中有几个类。应用程序控制器可以控制四个我称之为“设备”的对象,因为它们就像独立的设备一样。每个设备运行动作(计算),在这种情况下是图像处理。这些操作旨在在单独的线程中运行。因此,每个设备都应该打开一个“自己的”线程并在该线程中完成其计算。

为此,我设计了一个描述“设备”的基类,因此所有设备都继承了它们的基本设置和逻辑,尤其是它们由控制器控制的方式。对于我实现了一个'worker'类的线程,我计划将这些类实例推送到线程中。那部分还没有工作。这些工作类的设计如下: 基设备类包含一个嵌套的工作基类。它还实现了一些基本的控制方法来处理作为基本设备类成员存储的工作程序实例。所有专用设备类(派生自基本设备类)也实现了一个嵌套的工作类。这些类是从嵌套在基本设备类中的基本工作类派生的。这是层次结构的草图:

/class Device/
             /methods
             /members
             /class Worker/
                          /methods
                          /members
/class fooDevice(Device)/
                        /methods
                        /members
                        /class fooWorker(Device.Worker)/
                                                       /methods
                                                       /members
/class barDevice(Device)/
                        /methods
                        /members
                        /class barWorker(Device.Worker)/
                                                       /methods
                                                       /members

请注意,这些类fooWorkerbarWorker都派生自Device.Worker!

我的问题是:虽然这些东西在设置过程中似乎可以工作,但我得到了运行时错误。还不确定它们来自哪里,它们是什么意思。但首先我想了解我制作的类层次结构布局是否有意义?这完全是胡说八道吗?还是常用的?

谢谢!

4

1 回答 1

1

嵌套类是有意义的。Django 将它们用于模型和表单中的元配置。我有时在工厂模式中使用它们,例如

   class BaseFactory(object):
      class FactoryItem(object):
          pass 

      @classmethod
      def create(cls):
          return cls.FactoryItem()

   class ShoeFactory(BaseFactory):
      class FactoryItem(BaseFactory.FactoryItem):
          def laces(self):
              return 1

但是您可以轻松地在全局范围内定义 FactoryItem 类并将它们分配给“FactoryItem”类成员,例如

class Shoe(BaseFactory.FactoryItem):
    ...

class ShoeFactory(BaseFactory):
    FactoryItem = Shoe

我遇到的唯一问题是对象的反序列化。我真的不记得何时/何地/为什么,可能在某处使用了泡菜,但它未能解决嵌套类。

您遇到了哪些特定的运行时问题?

于 2013-01-29T11:27:08.797 回答