如何在Python中创建类似.isalpha()的实例方法?
实现类似.isalpha()的自定义实例方法
你之前写的def string.text()完全不符合Python语法,要实现像.lower()、.isnumeric()这类实例方法(调用时对象在方法名前),可以按以下两种方式操作:
方法一:给内置str类添加自定义方法
如果想让所有字符串对象都能使用这个方法,直接给str类绑定一个方法即可,方法的第一个参数必须是self(代表调用该方法的字符串实例):
def text(self): print(self) # 将方法绑定到str类上 str.text = text
调用示例:
"测试文本".text() # 输出:测试文本
方法二:自定义字符串子类
如果不想修改内置的str类,也可以定义一个继承自str的子类,在子类里实现自定义方法:
class MyString(str): def text(self): # self就是当前的字符串实例 print(self)
调用示例:
my_str = MyString("自定义字符串") my_str.text() # 输出:自定义字符串
原写法报错的原因
def string.text()是非法语法,Python不允许函数名包含点号。而且实例方法必须隶属于某个类,且第一个参数要接收调用它的对象实例(也就是self),这是Python实例方法的核心规则。
内容的提问来源于stack exchange,提问作者Snakey
相关产品推荐
相关产品推荐

