1

如何string使用 Python__new__方法创建一个新对象,以便字符串对象也应该具有类属性。

例如,我在 Maya 中对此进行了测试:

class A(object):
    def __new__(str, *args, **kwargs):
        return super(A, str).__new__(str)

    def __init__(self, obj):         
        self.obj =str(obj)

    def hai(self):
        print 'hai new obj. you are not string object. you are only cls object'

objA =A('object01')

objA.hai()

结果:'hai new obj. 你不是字符串对象。你只是 cls 对象'

objA

结果:< main .A object at 0x22799710>

我已经用 (PyMel) 的 PyNode 类进行了相同的测试

objB =PyNode('object01')
objB

结果:nt.Transform(u'object01')

但是 PyNode 对象给出了一个 unicode 或 string 对象。这意味着objB可以直接用作字符串或unicode,但objA不能那样使用

我怎样才能得到类似objB输出的东西?

4

1 回答 1

3

利用

class A(str)

创建A一个子类str

class A(str):
    def __new__(cls, *args, **kwargs):
        return super(A, cls).__new__(cls, *args, **kwargs)

    def hai(self):
        print('hai new obj. you are not string object. you are only cls object')

objA =A('object01')

objA.hai()
assert isinstance(objA, str)
于 2012-10-07T11:44:17.423 回答