Python使用类方法并定义默认值(如果param为空)和静态方法

2024-09-30 22:23:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经调试了fix_keep_int_value_as_string几个小时了。我认为为参数发送默认值的正确方法如下def fix_keep_int_value_as_string(self, s='')

不知何故,下面的def方法总是将s作为空字符串输出

为什么?如何正确设置默认参数值(如果未通过)

class BaseShirtsSpider(Spider):
    # Strip numbers only, be aware! returns string
    @staticmethod
    def fix_keep_int_value_as_string(self, s=''):
        print(s)
        s = str(s)
        print(s)
        s = re.sub('[^0-9\-]','',s)
        print(s)
        return s   


class ChildBaseSpider(BaseShirtsSpider):
    print(self.fix_keep_int_value_as_string(4))
    print(self.fix_keep_int_value_as_string("4"))

Tags: 方法字符串self参数stringvaluedefas
1条回答
网友
1楼 · 发布于 2024-09-30 22:23:47

这里有几个问题:

  1. 静态方法不需要self参数。当前,您正在尝试将'4'传递到fix_keep_int_value_as_stringself变量,而不是s变量
  2. 在初始化类之前(即调用__init__方法之后,ChildBaseSpider中的self变量不存在

假设Spider类不接受任何参数,以下操作将起作用:

class BaseShirtsSpider(Spider):
    # Strip numbers only, be aware! returns string
    @staticmethod
    def fix_keep_int_value_as_string(s=''):
        print(s)
        s = str(s)
        print(s)
        s = re.sub('[^0-9\-]', '', s)
        print(s)
        return s


class ChildBaseSpider(BaseShirtsSpider):
    def __init__(self):
        print(self.fix_keep_int_value_as_string(4))
        print(self.fix_keep_int_value_as_string("4"))


ChildBaseSpider()

相关问题 更多 >