是否可以向本机类添加方法?

时间:2019-05-09 02:44:00

标签: python string methods basic

我感到惊讶的是,与BASIC python不同的是,它没有.left,.right和.mid用于字符串的方法。

正如其他地方所述,编写函数来完成技巧很容易,但是可以向本机类添加方法吗?

如此

a = "Spam" 
b = a.left(3)   
print(b)

将输出:

Spa

2 个答案:

答案 0 :(得分:1)

b = a[:3]

将使用字符串的3个首字符

b = a[:15]

不会出错(不确定python2)

c = a[-3:]

最后3个字符

但是您仍然可以覆盖(继承)字符串类型

class MySuperString(str):
    def left(self, num_char):
        return self[:num_char]

a = MySuperString('plop')
b = a.left(3)

例如参见:http://www.nomadiccodemonkey.com/?p=590

编辑:

if isinstance(a, str):

将不再工作,请改用它:

if issubclass(a, str):

或者自然是这样:

if isinstance(a, MySuperString):

法国人的笑话:SuperSlip等游戏!

答案 1 :(得分:0)

您可以创建自己的函数。

right = lambda str, index: str[-index:]
left = lambda str, index: str[:index]
a = "Spam"
print(left(a,3))
print(right(a,3))