python __new__方法如何返回字符串或unicode对象而不是类对象

时间:2012-10-07 11:39:01

标签: python object

如何使用Python string方法创建新的__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 。对象位于0x22799710>

我用PyNode类(PyMel)

测试了它
objB =PyNode('object01')
objB
  

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

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

如何获得objB输出?

之类的内容

1 个答案:

答案 0 :(得分: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)