使用外部源名称动态创建继承对象

时间:2013-10-31 08:29:25

标签: python ui-automation squish

我正在尝试做什么

考虑包含行的文件:

A B C value
A B D value

是否有可能创建一个能够遵循这样的值的结构:

A.B.C.val()
A.B.D.val()

考虑到A, B, C, D是容器(如表单,窗口等),我希望能够通过使用此结构来获取每个元素路径。

我在问什么

最后,我想知道的是,如果有一个类(比如generic),我可以创建一个名为A的继承类(从文件中读取名称,可以是什么)在运行期间,然后不再存在(最后一部分不是很重要)?

1 个答案:

答案 0 :(得分:2)

这就是你要找的东西吗?

# Generic class definition
class Generic (object):
    value = None
    @classmethod
    def val(cls):
        return int(cls.value)

# Top level class
TopLevelClass = type('TopLevelClass',
                     (Generic, ), {})

lines = ["A B C 42",
         "A B D 43"]

for line in lines:
    # Parse the line
    path = line.split()[:-1]
    value = line.split()[-1]
    # Create the classes
    current = TopLevelClass
    for x in path:
        if hasattr(current,x):
            current = getattr(current,x)
        else:
            cls = type(x, (Generic, ), {})
            setattr(current,x,cls)
            current = cls
    # Apply value
    setattr(cls,'value',value)


# Test
print(TopLevelClass.A.B.C.val())
print(TopLevelClass.A.B.D.val())    

输出:

>>> 42
>>> 43