我正在学习Python,之前从未使用过任意数字参数函数,而且我很难理解为什么我会得到我正在得到的东西。具体来说,我正在运行此代码:
class LocationList(list):
def __init__(*pargs):
print(pargs)
print(len(pargs))
for the_item in pargs:
print(the_item)
the_location = LocationList('a location', 'another location')
我得到的是:
([], 'a location', 'another location')
3
[]
a location
another location
为什么我一开始就得到空列表?
我在Linux下使用Python 3.4.3。
答案 0 :(得分:2)
因为方法的第一个参数是调用它的对象。该对象是list
的后代。并且空列表打印为" []"。
答案 1 :(得分:1)
类中的方法将self作为第一个参数,包括
SELECT
T.PGM AS Program,
COUNT(*) AS ProgramCount,
RANK() OVER (ORDER BY COUNT(*) DESC) as ProgramRanking,
COUNT(DISTINCT t.sid) AS ProgramCount,
RANK() OVER (ORDER BY COUNT(DISTINCT t.sid) DESC) as StudentRanking
FROM StudentPrograms T
WHERE T.PGM <>'unknown' AND
T.CreateDate > '2015-10-01' AND
T.CreateDate < '2015-11-01' -- We do LIKE Halloween :)
GROUP BY T.PGM
ORDER BY COUNT(*) DESC;
为了得到结果我认为你在寻找:
__init__()
答案 2 :(得分:0)
* pargs,因为它以'*'(星号)为前缀,将所有参数收集到元组中。此外,对于类和对象方法定义,第一个参数始终是“self”,在这种情况下,您执行此操作时创建的对象(或实例):
the_location = LocationList('a location', 'another location')
此外,您的班级正在扩展名单:
class LocationList(list):
因此,self(对象)成为一个列表:
([], 'a location', 'another location') # self == []