gpt4 book ai didi

python - 改变对象的类方法

转载 作者:行者123 更新时间:2023-12-04 14:03:17 25 4
gpt4 key购买 nike

我一直在学习 python 中的类,我试图为扩展字符串类编写一个反向方法,它看起来像:

class NewString(str):

def reverse(self):
self = self[::-1]

string = NewString('Python')
string.reverse()
print(string)

我希望它打印“nohtyP”,但它没有。它保留字符串的原始值并打印“Python”。任何人都可以向我解释为什么这不起作用以及我如何更改类(class)以使其按照我的预期进行。除了更多地了解类(class)的运作方式之外,没有其他目的。

最佳答案

self 只是方法中的局部变量。重新分配它不会改变它之前引用的对象。由于字符串是不可变的,因此字符串子类的对象也是如此。您所能做的就是从方法中返回新的字符串对象:

class NewString(str):
def reverse(self):
return self.__class__(self[::-1]) # casts to the specific type of self

string = NewString('Python')
rev = string.reverse()
print(rev)
# nohtyP
type(rev)
# NewString

关于python - 改变对象的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69313848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com