如何在自定义类中实现startswith函数以处理类内字符串?
解决自定义类实例调用startswith的问题
嗨,我来帮你搞定这个问题!你遇到的核心问题是:startswith()是Python字符串的内置方法,你的自定义类本身并没有实现这个方法,所以直接对类实例调用肯定会报错。下面给你两种简单的解决方案:
方案1:访问自定义类中的字符串属性再调用startswith
最直接的方式就是先拿到类实例里存储字符串的那个属性,再对这个属性调用startswith()。假设你的自定义类里有个叫url的属性用来存字符串,示例代码如下:
定义自定义类
class CustomURL: def __init__(self, url, other_data=None): self.url = url # 这是存储目标字符串的属性 self.other_data = other_data # 类的其他属性
初始化你的URLData列表
URLData = [ CustomURL("https://stackoverflow.com"), CustomURL("http://example.com"), CustomURL("ftp://test.net") ]
循环检查的代码
# 遍历URLData中的每个类实例 for data_item in URLData: # 先访问实例的url属性,再调用startswith if data_item.url.startswith("https://"): print(f"匹配到HTTPS链接:{data_item.url}") elif data_item.url.startswith("ftp://"): print(f"匹配到FTP链接:{data_item.url}")
方案2:给自定义类添加startswith方法
如果你希望能直接对类实例调用startswith(),可以在自定义类里实现这个方法,让它内部代理到存储字符串的属性上。这样代码会更简洁:
改进后的自定义类
class CustomURL: def __init__(self, url, other_data=None): self.url = url self.other_data = other_data # 实现startswith方法,转发给内部的url属性 def startswith(self, prefix, start=0, end=None): return self.url.startswith(prefix, start, end)
现在循环代码可以直接调用实例的startswith
for data_item in URLData: if data_item.startswith("https://"): print(f"匹配到HTTPS链接:{data_item.url}")
这样两种方式都能解决你的问题,你可以根据自己的代码风格选择合适的方案~
内容的提问来源于stack exchange,提问作者Talha Shafique
相关产品推荐
相关产品推荐

