python中使用非标准类型的类型转换

python中使用非标准类型的类型转换,python,types,casting,Python,Types,Casting,例如,如何将一个类型从某个外部类转换为另一个类型?我到处搜索,得到了“int到string”之类的东西,但我说的是类“tile”转换成其他东西,比如“tile2” 正如Daniel在回答中提到的,在Python中不需要强制转换,因为Python的代码通常是(应该)编写的。但是,您可能需要在非标准类型之间进行转换 如果您想以转换的方式进行转换,例如,int、str、list等,则可能应该在您希望转换到的类中的\uuuuu init\uuuuuu方法中支持转换: class Tile: de

例如,如何将一个类型从某个外部类转换为另一个类型?我到处搜索,得到了“int到string”之类的东西,但我说的是类“tile”转换成其他东西,比如“tile2”

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

如果您想以转换的方式进行转换,例如,
int
str
list
等,则可能应该在您希望转换到的类中的
\uuuuu init\uuuuuu
方法中支持转换:

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
然后(根据您的需要调整
\uuuuu init\uuuuu
后),您应该能够像这样进行转换:

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'

它回答了你的问题吗?

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

如果您想以转换的方式进行转换,例如,
int
str
list
等,则可能应该在您希望转换到的类中的
\uuuuu init\uuuuuu
方法中支持转换:

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
然后(根据您的需要调整
\uuuuu init\uuuuu
后),您应该能够像这样进行转换:

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'

它回答了你的问题吗?

在Python中没有强制转换这样的东西。这是因为不需要它:一般来说,任何接受“tile”对象的函数都不应该关心它实际上是
tile
而不是
tile2
,只要它具有预期的数据和/或方法。这称为duck类型化,是使用动态类型化语言(如Python)编程的基本部分


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

在Python中没有强制转换这样的事情。这是因为不需要它:一般来说,任何接受“tile”对象的函数都不应该关心它实际上是
tile
而不是
tile2
,只要它具有预期的数据和/或方法。这称为duck类型化,是使用动态类型化语言(如Python)编程的基本部分


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

您能举个例子说明您正在尝试做什么吗?您能举个例子说明您正在尝试做什么吗?是的,这很有意义!谢谢。是的,这很有道理!谢谢。+1--在duck类型的上下文中,casting没有真正意义。+1--在duck类型的上下文中,casting没有真正意义。