在python中键入非标准类型的转换

时间:2011-11-27 22:14:50

标签: python types casting

例如,如何将类型从某个外部类转换为另一个类?我已经四处寻找,并获得了诸如“int to string”之类的东西,但我正在谈论类似“tile”转换为其他内容的东西,例如“tile2”。

2 个答案:

答案 0 :(得分:3)

在Python中没有投射这样的东西。这是因为没有必要:通常,任何接受'tile'对象的函数都不应该关心它实际上 tile而不是tile2,因为只要它具有预期的数据和/或方法。这称为duck typing,是动态类型语言(如Python)编程的基本部分。

当然,可以将转换从一个类转换为另一个类,但是没有通用的方法。您的tile / tile2类必须自己实现,可能是通过复制数据元素。

答案 1 :(得分:1)

正如丹尼尔在他的回答中所提到的,在Python 中不需要强制转换,因为Python的代码通常是(应该)编写的。但是,您可能需要的是在非标准类型之间进行转换

如果您希望以转换工作的方式执行转换,则可能在您希望它转换为的类中的__init__方法中支持转换。 intstrlist等:

class Tile:
    def __init__(self, val):
        # here paste the code making Tile object out of other objects,
        # possibly checking their types in the process
        pass

然后(根据你的需要调整__init__之后)你应该能够像这样投出它:

spam = Tile(ham)

更全面的类型转换示例:

>>> class AmericanTile:
    def __init__(self, val=None):
        if isinstance(val, str):
            self.color = val
        elif isinstance(val, BritishTile):
            self.color = val.colour


>>> class BritishTile:
    def __init__(self, val=None):
        if isinstance(val, str):
            self.colour = val
        elif isinstance(val, AmericanTile):
            self.colour = val.color


>>> a = AmericanTile('yellow')
>>> a.color
'yellow'
>>> b = BritishTile(a)
>>> b.colour
'yellow'

它能回答你的问题吗?