gpt4 book ai didi

python - python在哪里存储str的原始值

转载 作者:太空狗 更新时间:2023-10-30 01:32:04 25 4
gpt4 key购买 nike

我是 python 的新手,我有一个简单的问题。

假设我创建了 str 的子类以将所有内容更改为“测试”:

class Mystr(str):
def __str__(self):
return 'test'
def __repr__(self):
return 'test'

>>> mystr = Mystr(12345)
>>> print(mystr)
test
>>>
>>> print(mystr + 'test')
12345test

我想要的只是“测试”,但是python 在哪里存储原始值 '12345' ?我到处都找不到。

>>> dir(mystr)
['__add__', '__class__', '__contains__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__module__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

查了之后,居然在getnewargs

里找到了
>>> mystr.__getnewargs__()
('12345',)

然后我将其更改为:

class Mystr(str):
def __str__(self):
return 'test'
def __repr__(self):
return 'test'
def __getnewargs__(self):
return 'test'

>>> mystr = Mystr(12345)
>>> print(mystr)
test
>>> mystr.__getnewargs__()
'test'
>>> print(mystr + 'test')
12345test

为什么 12345 还在?python 在哪里存储原始值 '12345' ?

Win32 上的 Python 3.6.1(v3.6.1:69c0db5,2017 年 3 月 21 日,18:41:36)[MSC v.1900 64 位 (AMD64)]

最佳答案

它存储在self中。 self 是你的方法附加的对象,也就是字符串。

关于python - python在哪里存储str的原始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45874793/

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