背景
我使用django的get_valid_name()方法来对文件 和的名称进行处理,从而获取符合规范的文件名。
代码如下
image.name = Storage.get_valid_name(name=image.name)
运行代码后报错
Storage.get_valid_name() missing 1 required positional argument: 'self'
原因与解决方案
Storage是个python类,而get_valid_name()是Storage类的方法。类的方法和一般函数相比,其第一个参数必须是self,这个self代表类的实例。举个例子,你定义了一个学校的类,后指定有个北京小学,这个北京小学就是学校类的实例。
如果你想要调用某个类的方法,必须要先对类进行实例化。比如beijingschool=school(“北京”),从而得到北京小学这个实例,然后再去执行对应的方法,如:result=beijingschool.method()。也可以:result=school(“北京”).method()。
因此我的修改方案是直接在类的后方加()---------因为这个类不需要参数,如果需要参数则要传参。
image.name = Storage().get_valid_name(name=image.name)
参考资料:Python 面向对象 | 菜鸟教程
文章讲述了在使用Django的Storage类时,如何正确调用get_valid_name方法处理文件名,强调了类方法中self参数的重要性,并提供了实例化的解决方案。
3万+

被折叠的 条评论
为什么被折叠?



