如何从继承字符串类型的新类中访问字符串值
我想定义一个新的类,这个类要继承内置的字符串类型(str),并且创建一个方法来复制字符串的内容。
我该怎么才能获取我新类对象中赋值的字符串呢?
class str_usr(str):
def __new__(cls, arg):
return str.__new__(cls, arg)
def dub(self):
# How to modify the string value in self ?
self.<attr> = self.<attr> + self.<attr>
谢谢大家的帮助 :-)
3 个回答
0
注意,在Python中,你可以直接对字符串使用乘法运算符:
>>> s = "foo"
>>> s*2
'foofoo'
2
看起来你并不想从 str
这个类继承(其实这几乎没什么用)。你可以创建一个新的类,并让它有一个属性是字符串,这样你就可以访问这个字符串了。
class MyString(object):
def __init__(self, string):
self.string = string
def dup(self):
self.string *= 2
另外,有几点需要注意:
- 给你的类起名字时要用
CamelCaseCapitalization
的方式,这样大家能一眼看出这是个类。虽然str
和一些内置类不这样命名,但大家自己定义的类一般都是这样。 - 你通常不需要定义
__new__
这个方法。定义__init__
方法就可以了。你现在定义的__new__
方法其实没什么特别的用处。 - 如果你想给字符串添加新功能,可能不需要用类;你只需要定义一些处理字符串的函数就可以了。
4
在Python中,字符串是不可变的,也就是说一旦你创建了一个字符串,就不能改变它的值。这就像你有一个从 int
类派生出来的类,然后你想加一个方法来改变这个 int
的值,实际上是做不到的。
当然,你可以返回一个新的值:
class str_usr(str):
def dup(self):
return self + self # or 2 * self
s = str_usr("hi")
print s # prints hi
print s.dup() # print hihi