我真的很驚訝,問題得到了提升。爲什麼?它顯示研究工作嗎?沒有!也許OP做了研究,但他沒有明顯表現出來,它有用嗎?清楚嗎?很明顯,他在傳遞匿名對象方面存在問題。但是爲什麼他個人在獲取知識方面的鬥爭是有用的呢?
你想知道爲什麼你要這麼多的「功夫」中鍵入superfluos代碼,只是做一個簡單點的灰色橢圓形。 首先您必須記住,使用「Qt」您使用的是面向對象的框架。所以術語和概念上明智的是,您正在使用一組從中實例化對象的類。你會稱之爲類的是類。
在python中沒有參數的隱式類型檢查。所以,你可以傳球,你提出什麼:
grid.setPen(「灰色」,0,「點」)
但方法需要一些物體,它是familar與和知道如何處理它們。一個字符串-OBJECT它不知道要處理。所以這將是YOUR工作來解釋它應該做什麼。所以你要麼必須子類Qt.Pen
帶有一個可以處理你的字符串的構造函數,或者直接修改Qt.Pen類,然後重新編譯 QT。
我承認Qt.Pen
類不是最佳例子。因此,我們可以創建一個更好的示例來說明基本概念以及您處於錯誤假設下的位置。
但是我首先聲稱你的「代理」問題源自於理解面向對象範式的重大混淆,但在缺乏更深入的洞察力的情況下卻無法辨別出你的理由來源 - 這就是雞/蛋問題。
有很多通往羅馬的道路,你需要的是你的決定。但是隨着決定使用「Qt」,你已經決定了一整套道路。而這些都是針對對象構建的。
讓我們假設我們想繪製一些房屋。因此,我們定義一個方法draw_house
使用magical_drawing_routine
(其中的方式正是你在你原來的問題尋找):
def draw_house(house):
magical_drawing_routine(house)
draw_house('parentshome')
draw_house('myhome')
現在我們得到了整整兩個相同的畫房子沒有門,窗或可愛的煙囪我們父母的家。 (我們完全忽略了magical_drawin_routine
如何知道如何interprete字符串值)
回到繪圖板,我們會糾正缺少這些:
def draw_house(door, window, chimney):
magical_drawing_routine(door, window, chimney)
parentshome = ['oak', 'green', 'yes']
myhome = ['beech', 'red', 'no']
draw_house(parentshome)
draw_house(myhome)
現在我們得到了整整兩個相同的畫房子與門,窗戶和我們父母的家的可愛的煙囪。但等等,窗戶和門具有完全相同的形狀。回到繪圖板...
一些cylces後你會是這樣的:
def draw_house(doormaterial, doorcolor, doorshape, doorwithglass, doorglassparts, windowsnumber, widnowsdistributionpattern, windowsencassing, windowmaterial, windowshape, windowpattern, windowdecoration, chimney):
...
,或者我們可以定義類:具有合理的默認值class House, class Window, class Door, class Chimney
。
pdoor, mdoor = Door(a,b), Door(a,Z)
pwin, mwin = Window(e,f,g), Window(e,f,Y)
pchimney, mchimney = Chimney(h), Chimney(X)
parentshome = House(pdoor, pwin, pchimney)
myhome = House(mdoor, mwin, mchimney)
如果你使用你的父母只有一次門,就可以forgoe的pdoor定義和實例化對象上即時,同時傳遞參數,通過gerenating一個匿名對象(不變量附後): parentshome =房屋(門(...),......)
所以簡單的答案是:你不通過類型! 您傳遞對象,這通常是封裝複雜性。但是對於非常簡單的對象,它可能看起來像你簡單的東西 - 但這只是它的樣子。
這僅僅是不可能的,並表明你沒有考慮過。你提出的方式,每個功能都必須知道一切。重新考慮你的問題,這樣很搞笑。 – 2011-12-31 09:08:20
我很抱歉,如果這個問題來的熱鬧,我自學編程,並不知道太多的理論。你能解釋爲什麼它很愚蠢嗎?我學到的第一門編程語言是Matlab,它可以讓你完成我所說的:plot(x,'r-') – jminardi 2011-12-31 09:16:10
http://en.wikipedia.org/wiki/Data_type已經包含了一些答案,你可以即使沒有正式的計算機科學教育,也很容易找到它。另見我的回覆。 – 2011-12-31 09:19:24