我如何在python中的函数参数中传递实例属性

时间:2014-01-16 03:57:33

标签: python django

我有这个功能代码

   def getList(self, cursor=self.conn_uat.cursor()):
        from pprint import pprint
        cursor.execute(...)

我收到此错误

NameError: name 'self' is not defined

我在args中使用的原因是我不在任何函数中放置任何依赖项以使测试更容易

2 个答案:

答案 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