尋找一些PyQt的例子,當我遇到了folloqing類型的代碼來了?
使用apply這種類型的代碼的目的是什麼?蟒蛇繼承和__init__功能
回答
*args
意味着__init__
接受任意數目的位置參數,所有這些都將被存儲在列表args
。欲瞭解更多信息,請參閱
這段代碼使用已棄用的apply
函數。現在,你會以三種方式寫:
QWizardPage.__init__(self, *args)
super(DisplayPage, self).__init__(*args)
super().__init__(*args)
的第一行是什麼apply
不直譯(不要在這種情況下使用它,除非QWizardPage
不是new-style class)。第二種使用super
,如PEP 367中所定義。第三個使用PEP 3135中定義的super
(僅適用於Python 3.x)。
DisplayPage
繼承自QWizardPage
。它的構造函數接受的參數的變化量(這是* ARGS的意思),並把它們都傳遞給其母公司的構造,QWizardPage
這是更好地說:
super(DisplayPage, self).__init__(*args)
「可變長度參數列表「:http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/
基本上,它只是說,將所有傳遞給DisplayPage的__init__方法的參數傳遞給QWizardPage的__init__方法。
在參數列表中(定義函數)* args是Python表示「可變參數」(在C和C語言中稱爲「可變參數」)的方式。在一個參數列表中(一個調用函數)* args具有互補的含義......它將函數「應用」到變量的值,就好像它們已被解壓縮並「粘貼」到函數的調用中。
「參數」和「參數」之間的這種區別是經常未被闡明的。參數是放置參數的槽。參數被提供給一個函數調用。參數是可以在函數範圍內引用參數的名稱。
所以,如果我定義一個函數:
def foo(x, *a):
print "First arg: ", x
print "Other args: ", ' '.join([str(x) for x in a])
我因此稱之爲:
foo(1, 2, 3, 4)
...和我的代碼會看到1爲 「X」(該參數是一個對象引用綁定到名爲「x」的參數的整數1)和列表[2,3,4]作爲參數(參數將是對三個項目列表的對象引用並綁定到名爲「a」的函數參數) )。
如果我綁定以下元組:
bar = (1, 2, 3, 4)
...並調用foo()
這樣的:
foo(*bar)
...這將是一個呼叫是相同的我前面的例子。 「bar」將被解壓縮,並作爲4個參數的序列傳遞給foo()
。這個特定的函數將綁定1到第一個參數,並將任意數量的其他參數打包到一個參數中。不過我可以打電話給一些其他的功能:
geewhiz(*bar)
...和正當我爲foo()
描述它會被傳遞四個參數。 (如果geewhiz()
被寫成只接受3個參數,那麼Python將引發一個TypeError,用於調用具有錯誤參數數量的函數......完全如同您調用geewhiz(1,2,3,4)
一樣
在一般情況下,Python支持定義函數默認的參數,變量的參數和關鍵字參數比我見過的任何其他腳本語言都更加靈活,但是所有這些功能和靈活性都可能有點令人困惑
在Python3中,他們還添加了一些皺紋tuple packing assignments看起來像:
a, b = 1, 2
...也頻頻現身於類似的代碼:
for key, val in my_dict.items():
...
每個項目正在由.items()
方法返回一個元組,而被包裝成關鍵,VAL元組。 (Python中的元組不需要包含圓括號,,是元組標記)。
現在Python3有可能做這樣的事情:
a, *b = 1, 2, 3, 4
......,正如你可能已經猜到,結合第一個元素爲「A」,其餘被包裝成另一個元組是綁定到「b」。
儘管這與函數參數列表中的* args無關,但我提到它是因爲它們在概念上和語法上相似。
- 1. 蟒蛇導入功能__init__
- 2. 蟒蛇功能
- 3. 蟒蛇功能
- 4. NameErrors和功能蟒蛇
- 5. Python的繼承和__init__
- 6. Python類繼承,__init__和cls
- 7. __deepcopy__和繼承與__init__
- 8. 蟒蛇在功能
- 9. 功能不蟒蛇
- 10. 的__init__.py不蟒蛇
- 11. 繼承:__init__覆蓋
- 12. Python類繼承__init__
- 13. 蟒蛇:某事像參數化繼承
- 14. 蟒蛇__new__ - 如何在不繼承
- 15. 繼承時__new __()不蟒蛇2.7.12
- 16. 蟒蛇多重繼承輸出問題
- 17. 蟒蛇3類繼承問題
- 18. 繼承蟒蛇瓦爾模板
- 19. 繼承功能?
- 20. 功能和類繼承
- 21. AS3 OOP繼承和功能
- 22. 朋友和繼承功能
- 23. 多數和expletive_deleted蟒蛇功能
- 24. 蟒蛇smtp附加功能
- 25. 雖然功能蟒蛇
- 26. 返回主功能蟒蛇
- 27. 蟒蛇功能,beautifulsoup刮
- 28. 蟒蛇返回功能
- 29. 功能方面與蟒蛇
- 30. 蟒蛇元/開箱功能
謝謝你的所有鏈接 – shodanex