Как объявить функцию, которая возвращает массив объекта? - PullRequest
0 голосов
/ 25 апреля 2018

Просто начинаю работать на python (из .Net).Я пытаюсь выяснить, как объявить функцию, которая возвращает список объектов:

class myObj:
  def __init__(self):
    self.myValue1: int=1
    self.myValue2: float=2.1

class myOwner:
  def __init__(self):
    self.myListofObj: myObj=[]

  def getMyListOfObj(self): # <== Here
    return self.myListOfObj
  1. В объявлении getMyListOfObj(), как мне подсказать IDE (Pycharm)что этот метод возвратит array из myObj вместо этого?Например, если я сделаю:

    xx = [a of a в newOwner.getListOfObj ()]

Pycharm будет думать, что он возвращает myObj object, вместоarray.Я знаю:

def getMyListOfObj(self) -> []:

, но это не означает, что это array of myObj, просто array.

В строке, декларирующей self.myListofObj: myObj=[], это правильный способ объявить array из myObj?

Ответы [ 2 ]

0 голосов
/ 07 мая 2018
Нет, ваша аннотация означает, что self.myListOfObj равно myObj.

Отметьте его следующим образом: self.myListOfObj: typing.List[myObj] = []

  1. Пожалуйста, отметьте PEP 484
0 голосов
/ 25 апреля 2018

Переменные в Python - это имена без типов. Вы создаете переменную, инициализируя ее присваиванием. Когда я запускаю твой код, я получаю это.

$ python test.py
  File "test.py", line 3
    self.myValue1: int=1
                 ^
SyntaxError: invalid syntax
$ 

Мне неясно, что вы пытаетесь сделать. Возможно это.

class myObj:
  def __init__(self, x = 0, y = 0):
    self.myValue1 = x
    self.myValue2 = y

class myOwner:
  def __init__(self):
    self.myListofObj = []

  def getMyListOfObj(self): 
    return self.myListOfObj
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...