Python:Original';对象';类被重新定义。如何获得';对象';回来上课?

Python:Original';对象';类被重新定义。如何获得';对象';回来上课?,python,metaclass,python-datamodel,Python,Metaclass,Python Datamodel,我正在使用python语言作为Squish自动化工具。此工具使用一些自定义对象和函数扩展python。这是他们在报告中所说的: Squish的特定于Python的扩展模块由 在内部执行以下语句的等效语句: Python import test import testData import object import objectMap import squishinfo from squish import * 这意味着不需要自己导入它们,除非 正在开发自己的独立模块 通过这样做,他们会自动重

我正在使用python语言作为Squish自动化工具。此工具使用一些自定义对象和函数扩展python。这是他们在报告中所说的:

Squish的特定于Python的扩展模块由 在内部执行以下语句的等效语句:

Python
import test
import testData
import object
import objectMap
import squishinfo
from squish import *
这意味着不需要自己导入它们,除非 正在开发自己的独立模块

通过这样做,他们会自动重新定义
对象
(to),因此我尝试创建新样式的类(如
类NewClass(object):
)时出错:

TypeError:调用元类基时出错<代码>模块。\uuuu初始化\uuuuuuuuuu() 最多接受2个参数(给定3个)

所以我正试图把
对象
拿回来。 阅读后,我尝试使用以下代码获取
对象

class OrigObject:
    __metaclass__ = type

class NewClass(OrigObject):
    pass
我的问题是:这是否与从原始
对象继承相同

更新:我只能使用Python 2.4(如果有必要的话)


谢谢

这将为您获得它:
basestring.\uu bases\uuu[0]

从您链接的页面:

Squish的对象模块与所有Python2新型类和所有Python3类的基类同名。实际上,这很少是一个问题对于Python2,我们可以只创建旧式类,或者导入内置对象,并从内置对象继承。对于Python3,不需要做任何事情,因为我们从来没有显式地继承对象,因为如果没有指定其他类,它在默认情况下是继承的

因此:

导入内置的__ >>>内置对象 >>>类SomeOldStyleClass(): ... 通过 ... >>>SomeOldStyleClass.\uuuu子类\uuuuu() 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 AttributeError:class SomeOldStyleClass没有属性“\uuu子类\uuuu” >>>类SomeClass(\uuuuu内置\uuuuuuu.object): ... 通过 ... >>>SomeClass.\uuuu子类 []

虽然,我会注意到,我认为对于上述模块的创建者来说,这是一个极其糟糕的决定,他们应该把它称为其他东西。即使它是针对Python3.x的,如果他们是针对2.x发行的,他们也应该想一想,把它叫做别的东西对他们没有什么坏处,而把它叫做
object
他们会制造问题。

完全同意。那种设计是灾难性的!至于设计,我也完全同意。他们还使用函数重新定义了
type
,因此
类NewClass(type):
也不可能。无论如何,感谢您抽出时间阅读手册并指出我遗漏的内容。
>>> import __builtin__
>>> __builtin__.object
<type 'object'>
>>> class SomeOldStyleClass():
...    pass
... 
>>> SomeOldStyleClass.__subclasses__()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: class SomeOldStyleClass has no attribute '__subclasses__'
>>> class SomeClass(__builtin__.object):
...    pass
... 
>>> SomeClass.__subclasses__()
[]