我有使用类用Python编写的测试代码。

测试环境有两种类型的主机:运行应用程序的应用程序主机和运行存储组件的存储主机。

我有两个类,每个类代表主机的类型:

class AppHost_Class(object):
    def __init_(self, ip_address):
        # etc.

    # This method handles interfacing with the application
    def application_service(self):

    # This method handles the virtual storage component
    def virtual_storage(self):

    # This method handles caching
    def cache_handling(self):


class Storage_Server_Class(object):
    def __init_(self, ip_address):

    # This method handles interfacing with the storage process
    def storage_handling(self):

    # This method handles interfacing with the disk handling processes
    def disk_handling(self):


问题在于拓扑可以更改。

拓扑1是这样的:
-应用程序主机运行
   *申请流程
   *虚拟存储过程
   *缓存进程


存储主机运行


储存过程
磁盘处理过程



我当前的测试代码处理拓扑#1

但是,我们还希望支持另一种拓扑(拓扑2)


应用程序主机运行


申请流程

存储主机运行


虚拟存储过程
缓存进程
储存过程
磁盘处理过程



如何重构类,以使拓扑1的类及其方法相同,但是对于拓扑2的Storage_Server_ClassAppHost_Class获取某些方法?

我当时在考虑让孩子上这样的课:

class Both_Class(AppHost_Class, Storage_Server_Class):


但我不想这样做,因为我不希望applcation_service方法可用于Both_Class

有没有一种方法可以将AppHost_Class中的一些方法映射到Storage_Server_Class中?

最佳答案

这是一个类B的示例,该类完全共享类A中定义的一个方法:

class A:
    def a1(self):
        pass
    def a2(self):
        pass

class B:
    def __init__(self, instance_of_a):
        self.a2 = instance_of_a.a2

a = A()
B(a)

10-08 16:18