2012-07-12 103 views
-1

我是新來的python,我有傳遞參數的愚蠢問題。Python:函數,傳遞參數

class MyClass(): 

    @staticmethod 
    def add_group(name, parent_id): 
     print "add_group method, name: %s, parent_id: %s" % (name, parent_id) 

其他類的方法

def task(): 
    print "task method, name: %s, group_id: %s" % (name, parent_id) 
    MyClass.add_group(name, parent_id) 

輸出:

task method, name: blabla, group_id: 15 

add_group method, name: blabla, parent_id: (15L,) 

什麼用PARENT_ID參數發生了什麼?任何幫助,將不勝感激!

+1

你'group_id'不'parent_id' – Adam 2012-07-12 04:02:12

+1

也叫'MyClass.add',並且向我們展示MyClass.add_group'的'定義過去了。 – 2012-07-12 04:02:32

+0

'MyClass.add(name,group_id)'從哪裏來? – 2012-07-12 04:02:39

回答

1

在一種情況下,你在15過去了,在你在(15L,)通過另一種情況下(即,(一個元組,其第一值是15L,即長15)或表示15.一個任意精度的數)

當數字變成非常大的數值(例如10 ** 20)時,數字自然會變成多頭,但在這種情況下它非常小;我能想到你的唯一方法會得到很長的一段時間,你沒有預料到會像10**20 - 10**20 + 15那樣做,或者在你的程序中有一些其他的價值是很長的。

編輯:具體而言,您程序中的其他值可能由您正在使用的庫返回。

+0

這是我認爲OP會得到的最佳答案。添加一個@classmethod裝飾器的例子,我稱之爲黃金。 – jdi 2012-07-12 04:25:18

+1

其實。 OP正在變長的事實使得我可能從數據庫驅動程序直接返回值。通常情況下,你不只是隨機看到一個很長的,除非你做了一個。 – jdi 2012-07-12 04:27:35

+0

@jdi:很好的電話。是的,編輯答案表明這一點。 – ninjagecko 2012-07-12 04:29:14