gpt4 book ai didi

python - 扩展 str 类以获取其他参数

转载 作者:太空狗 更新时间:2023-10-30 02:22:41 30 4
gpt4 key购买 nike

我想创建一个新类,它是一种特殊类型的字符串。我希望它继承 str 类的所有方法,但我希望能够向它传递一个它可以使用的附加参数。像这样:

class URIString(str, ns = namespace): # ns defaults to global variable namespace
def getLocalName(self):
return self[(self.find(ns)+len(ns)):] # self should still act like a string
# return everything in the string after the namespace

我知道语法不对。但希望它传达了我想要表达的想法。

最佳答案

你会想做这样的事情:

class URIString(str):
_default_namespace = "default"

def __init__(self, value, namespace=_default_namespace):
self.namespace = namespace

def __new__(cls, value, namespace=_default_namespace):
return super().__new__(cls, value)

@property
def local_name(self):
return self[(self.find(self.namespace)+len(self.namespace)):]

我已经使用 @property 装饰器将 getLocalName() 转换为属性 local_name - 在 python 中,getters/setters 被认为是不好的练习。

请注意,Python 3.x 之前的版本,您需要使用 super(URIString, cls).__new__(cls, value)

关于python - 扩展 str 类以获取其他参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9218449/

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