Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对象如何转换为类对象?_Python_Python Internals - Fatal编程技术网

Python 对象如何转换为类对象?

Python 对象如何转换为类对象?,python,python-internals,Python,Python Internals,对象如何转换为类对象?例如: >>> object <type 'object'> >>> class NewClass: ... pass 要将该对象转换为NewClass,需要在解释器中执行哪些操作?或者没有类语法是不可能的?一般来说,不能简单地将一个类的对象转换成另一个类;默认情况下,它们是不兼容的类型。而是为旧类编写一个转换方法,返回新类的所需对象。例如 class new_obj: def __init__(self,

对象如何转换为类对象?例如:

>>> object
<type 'object'>

>>> class NewClass:
...     pass

要将该对象转换为NewClass,需要在解释器中执行哪些操作?或者没有类语法是不可能的?

一般来说,不能简单地将一个类的对象转换成另一个类;默认情况下,它们是不兼容的类型。而是为旧类编写一个转换方法,返回新类的所需对象。例如

class new_obj:
    def __init__(self, value=13):
        self.value = value


class old_obj:
    def __init__(self, value=7):
        self.value = value

    def to_new(self):
        return new_obj(value * value)
您的转换顺序将是

old_thing = old_obj(5)
new_thing = old_thing.to_new()

你认为对象在哪里转换成类对象?我不明白你在这个问题上的意思。@juanpa.arrivillaga我认为创建一个类和创建一个类NewClassobject:是一样的,它从对象类型转换而来。类对象是使用元类创建的,元类是类的一个类。除非您特别选择一个备用类型,否则它将是类型,并且您可以使用类型的三参数形式动态创建类。因此,NewClass=typeNewClass,object,{}将与您的类定义等效。注意,类不是从基类创建的。大卫542读了一些关于课程创建过程中发生的事情的好文章:我不认为这是OP所要求的,但它不是非常清楚。
old_thing = old_obj(5)
new_thing = old_thing.to_new()