小编Vis*_*sko的帖子

如何在Python中转换对象

我有两个类(让我们称之为Working和ReturnStatement),我无法修改,但我想用日志记录扩展它们.诀窍是Working的方法返回一个ReturnStatement对象,因此新的MutantWorking对象也返回ReturnStatement,除非我可以将它强制转换为MutantReturnStatement.用代码说:

# these classes can't be changed
class ReturnStatement(object):
    def act(self):
        print "I'm a ReturnStatement."

class Working(object):
    def do(self):
        print "I am Working."
        return ReturnStatement()

# these classes should wrap the original ones
class MutantReturnStatement(ReturnStatement):
    def act(self):
        print "I'm wrapping ReturnStatement."
        return ReturnStatement().act()

class MutantWorking(Working):
    def do(self):
        print "I am wrapping Working."
        # !!! this is not working, I'd need that casting working !!!
        return (MutantReturnStatement) Working().do()

rs = MutantWorking().do() #I can use MutantWorking just like Working
print "--" # …
Run Code Online (Sandbox Code Playgroud)

python inheritance casting

15
推荐指数
2
解决办法
6万
查看次数

标签 统计

casting ×1

inheritance ×1

python ×1