類據我所知,我們定義一個類的方法是類似下面的代碼:定義在Python
class Example:
'fields: firstname, lastname'
def __init__(self, fn, ln):
self.firstname = fn
self.lastname = ln
如果第一個元素不是簡單的字符串是什麼?如果它是一個列表,如何定義該類呢?
類據我所知,我們定義一個類的方法是類似下面的代碼:定義在Python
class Example:
'fields: firstname, lastname'
def __init__(self, fn, ln):
self.firstname = fn
self.lastname = ln
如果第一個元素不是簡單的字符串是什麼?如果它是一個列表,如何定義該類呢?
相同的方式。你不用Python定義變量類型,所以類型是字符串還是列表都沒有區別。
Python是動態類型化的,因此,對於分配給變量的值是什麼類型,或者傳遞給對象構造函數都無關緊要。
你可以通過你想要的任何東西,除非底層代碼強制某種類型(通過明確的檢查或duck-typing的用法),它根本就沒有關係。
所以你的情況,如果你調用Example(1, Example)
,那麼第一個名稱將是整數1
,最後名稱將是型Example
(不是真的有用,但可能)。
謝謝!但是如何調用列表中的元素? 「self.firstname = fn」,如果fn是一個列表呢? – user4710021 2015-04-05 22:19:12
你的課堂的聲明根本不需要改變。你只是通過一個不同的價值。訪問該對象的成員會給你任何你通過的東西。 'obj = Example(1,['a','b','c'])',那麼'obj.firstname'會給你'1','obj.lastname'會給你列表'[' a','b','c']'。 – poke 2015-04-05 22:20:55
Python是一種動態類型的語言。如果第一個元素是list
,則它將是list
類型。如果你的程序是依靠其在my_example.firstname
字符串的Example
對象上,你需要檢查,這是一個字符串,像這樣的東西:
if isinstance(fn, str):
self.firstname = fn
else:
self.firstname = 'John'
你嘗試了嗎?有用。 – 2015-04-05 22:10:53
「第一元素」是什麼意思?第一個參數「fn」?或者字符串「'fields:firstname,lastname'(」docstring「)? – Blckknght 2015-04-05 22:13:09
@Blckknght我的意思是「名字」,如果「名字」是一個字符串列表,我想調用每個字符串,該怎麼辦?怎麼做? – user4710021 2015-04-05 22:16:18