2013-06-04 113 views
-7

python可能定義一個函數def my_func(),它創建並返回某個用戶定義的類的對象,以便可以調用此對象的屬性作爲my_func().attr?我試圖創建一個接受對象的運算符,並根據它的屬性生成另一個對象。函數返回python中的對象

+0

您可以指定屬性的功能對象。 –

+0

我已經有用戶定義的類,我想用它來生成一個實例 – freude

+3

不可能定義一個不允許的函數。即使定義了'def f():return',你也可以通過'foo().__ init__'來獲得'NoneType'初始值設定項。 –

回答

4

你可以用任何你想要的類做到這一點,但這裏的使用namedtuple

>>> from collections import namedtuple 
>>> Point = namedtuple('Point', 'x y') 
>>> def my_func(): 
     return Point(1, 9) 

>>> my_func().x 
1 

此代碼一個簡單的例子是完全無用的,雖然

+0

這就是我需要的。我可以把Point = namedtuple('Point','x y')放在函數的主體中嗎? – freude

+3

@freude是的,如果你想要的話,你應該真的嘗試一些這些東西 – jamylak

+1

不是指向(1,9)在函數體內的作用域。它怎麼可見?您已將其定義在功能 – freude