如何使用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
输出?
答案 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)