我有这个功能代码
def getList(self, cursor=self.conn_uat.cursor()):
from pprint import pprint
cursor.execute(...)
我收到此错误
NameError: name 'self' is not defined
我在args中使用的原因是我不在任何函数中放置任何依赖项以使测试更容易
答案 0 :(得分:3)
self
仅在方法getList
内 。但是,您尝试在函数声明行中访问方法外部。因此,您得到NameError
。
我认为最简单/最干净的解决方案是:
def getList(self, cursor=None):
from pprint import pprint
cursor = self.conn_uat.cursor() if cursor is None else cursor
cursor.execute(...)
上述代码的功能与您尝试使用的功能相同。
此外,如果您需要,可以参考conditional operators。
答案 1 :(得分:0)
该函数在类声明中定义,因此特定实例未知。参数是根据定义创建的,而不是在运行时创建的
这是另一个例子: "Least Astonishment" and the Mutable Default Argument