python - 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"))
解决方案
这里有几个问题:
- 静态方法不需要
self
参数。目前您正在尝试传递'4'
到self
变量fix_keep_int_value_as_string
而不是s
变量。 - 在类被初始化之前(即在方法被调用之后),
self
变量 inChildBaseSpider
不存在。__init__
假设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()
推荐阅读
- python - 如何从大量文章(维基百科)中训练短语模型?
- laravel - Laravel not add foreign key in PostgreSQL
- python - How to shoot bullets at the same time as another player and easier method on creating boundaries between rectangles and players?
- c - 我无法用 c 语言读取另一个结构
- python - convert list of element to int and not the string in python
- javascript - 在调用 JSON.stringify() 之前,Vue 数据不可用
- python-3.x - python selenium "Timed out receiving message from renderer" when getting screenshot
- laravel - Laravel get a empty variable from axios.post from vuie.js module
- python-3.x - 我想在 python 中使用 openpyxl 模块在 Excel 单元格中绘制对角线
- java - 如何从 apache POI dataValidators 正确转换 ExplicitListValues 进行测试?