python - Python 无法识别函数中的参数
问题描述
我创建了一个对象,其中包含一个具有 3 个参数的函数,但是,程序不会获取我的最后一个参数 dy。
编码
class blaster(object):
def __init__(self,x,y,r):
self.x = x
self.y = y
self.radius = r
self.xvelocity = 5
self.yvelocity = 0
self.blastercount = 0
self.isblasting = False
self.xarray = []
self.yarray = []
self.xcounter = []
self.ycounter = []
def initiate_blast(self,xx,yy,dx,dy):
self.xarray.append(int(mn.x))
self.yarray.append(int(mn.y))
self.xcounter.append(int(dx))
self.ycounter.append(int(dy))
该函数被调用:
blaster.initiate_blast(troop.x,troop.y,5,5)
输出:
TypeError: initiate_blast() missing 1 required positional argument: 'dy'
解决方案
initiate_blast
被定义为实例方法,并且您在class上调用它。
因此没有self
传入隐式参数,所以你调用这个:
blaster.initiate_blast(self=troop.x, xx=troop.y, yy=5, dx=5)
即使调用本身没有爆炸,它也会在第一行爆炸,就像self
没有xarray
属性的废话一样。
顺便用小写命名“正确的”类是非常糟糕的形式。对于某些内置函数和基于类的装饰器等来说没关系,但这里不是这种情况,blaster
显然是作为一个实际类型,而不是作为一个恰好是一个类的任意可调用对象。
推荐阅读
- powershell - 使用 PowerShell 执行调用批处理文件的远程脚本
- powershell - 通过 REST API 创建服务连接时无法加载私钥
- javascript - 如何在没有日志记录的情况下清除浏览器控制台?
- python - FactoryBoy - 嵌套工厂/最大深度?
- c++ - 如何在 C++ 中宏#define 静态方法调用?
- javascript - 尝试签署 jwt 会返回 undefined
- google-sheets - 对字符串中的数字求和 Google 表格
- c# - CheckboxFor - 无法隐式转换类型“bool?” '布尔'
- javascript - 在解决方案基于终端的情况下,我是否收到错误错误,或者我是否遗漏了什么?
- react-native - 用软移动动画移动 x 和 y 反应原生