0

我想以下面的测试代码应该工作的方式使用自定义 python 对象模拟字符串:

import os
class A(str):
    path=""

    def __repr__(self):
        return self.path
    def __str__(self):
        return self.path

a=A()
a.path = "myfile"

print os.path.join('mydir',a)

我期待

mydir/myfile

但我只有

mydir/

如何编写我的类来模拟字符串?

4

1 回答 1

1

您可以尝试使用UserString.UserString而不是直接子类化字符串:

import os
from UserString import UserString

class A(UserString):

    def __init__(self, initial=''):
        self.data = initial

    @property
    def path(self):
        return self.data

    @path.setter
    def path(self, value):
        self.data = value

a=A()
a.path = "myfile"

print(os.path.join('mydir',a))

编辑:我使用 python3's 编写了答案collection.UserString,然后发现它也被反向移植到 python2 。

于 2013-11-07T13:58:06.427 回答