2015-04-05 45 views
-4

類據我所知,我們定義一個類的方法是類似下面的代碼:定義在Python

class Example: 
    'fields: firstname, lastname' 
    def __init__(self, fn, ln): 
     self.firstname = fn 
     self.lastname = ln 

如果第一個元素不是簡單的字符串是什麼?如果它是一個列表,如何定義該類呢?

+0

你嘗試了嗎?有用。 – 2015-04-05 22:10:53

+0

「第一元素」是什麼意思?第一個參數「fn」?或者字符串「'fields:firstname,lastname'(」docstring「)? – Blckknght 2015-04-05 22:13:09

+0

@Blckknght我的意思是「名字」,如果「名字」是一個字符串列表,我想調用每個字符串,該怎麼辦?怎麼做? – user4710021 2015-04-05 22:16:18

回答

0

相同的方式。你不用Python定義變量類型,所以類型是字符串還是列表都沒有區別。

0

Python是動態類型化的,因​​此,對於分配給變量的值是什麼類型,或者傳遞給對象構造函數都無關緊要。

你可以通過你想要的任何東西,除非底層代碼強制某種類型(通過明確的檢查或duck-typing的用法),它根本就沒有關係。

所以你的情況,如果你調用Example(1, Example),那麼第一個名稱將是整數1,最後名稱將是Example(不是真的有用,但可能)。

+0

謝謝!但是如何調用列表中的元素? 「self.firstname = fn」,如果fn是一個列表呢? – user4710021 2015-04-05 22:19:12

+0

你的課堂的聲明根本不需要改變。你只是通過一個不同的價值。訪問該對象的成員會給你任何你通過的東西。 'obj = Example(1,['a','b','c'])',那麼'obj.firstname'會給你'1','obj.lastname'會給你列表'[' a','b','c']'。 – poke 2015-04-05 22:20:55

0

Python是一種動態類型的語言。如果第一個元素是list,則它將是list類型。如果你的程序是依靠其在my_example.firstname字符串的Example對象上,你需要檢查,這是一個字符串,像這樣的東西:

if isinstance(fn, str): 
    self.firstname = fn 
else: 
    self.firstname = 'John'