2013-06-04 2 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

Is not Point (1,9) вне сферы действия в теле функции. Как это видно? Вы определили его вне функции – freude

Смежные вопросы