python方法()只需要1个参数(给定2个)

时间:2014-05-23 10:27:17

标签: python django

我在django app views.py

中有这样的课程
from dms.models import Folder, File, FileTag

class GetFamily:

    def getFathers(folder_id):
        if folder_id == None:
            rev_fathers=None
        else:
            fathers=[]
            rev_fathers=[]
            father=Folder.objects.get(id=folder_id)
            fathers.append(father)
            while father.parent_folder_id != None:
                father=Folder.objects.get(id=father.parent_folder_id)
                fathers.append(father)
            rev_fathers=reversed(fathers)
        return rev_fathers

    def getChildrenFolders(folder_id):
        folders=Folder.objects.filter(parent_folder_id=folder_id)
        return folders  

    def getChildrenFiles(folder_id):
        files=File.objects.filter(folder_id=folder_id)
        return files

当我调用带有id的getFathers(folder_id)方法时,它会给出   getFathers()只需要1个参数(给定2个)

请帮帮我

2 个答案:

答案 0 :(得分:5)

getFathers是类GetFamily的方法,因此它需要实例的第一个参数。 python中的约定是使用名称self作为此参数:

def getFathers(self, folder_id):

请注意,该功能本身不会访问任何类'成员。这通常是一个很好的指标,它不需要是类的方法,或者它将使用@staticmethod声明为静态方法。

答案 1 :(得分:1)

在参数中包含self

def getFathers(self, folder_id):

或者,如果它不需要任何实例变量,请将其标记为staticmethod

@staticmethod
def getFathers(folder_id):