Как определить класс Python с подсказками типов на полях - PullRequest
0 голосов
/ 07 января 2020

В C ++, когда я определяю класс, пользователь сразу знает тип каждого поля:

class Person  {
      string name;
      int age;
}

Я хотел бы сделать то же самое в Python, то есть определить такой класс, как этот :

class Person:
     name: str
     age: int

Но это не работает. Есть ли способ сделать это в Python?

Ответы [ 3 ]

1 голос
/ 07 января 2020

Я нашел ответ сам - ошибка произошла в python 3.5. Код, который я написал, прекрасно работает в python 3.7.

#!python3.7

class Person:
    name:str
    age:int

p = Person()
print(p)

Я оставляю его здесь на случай, если у кого-то еще возникнет такая же проблема.

1 голос
/ 07 января 2020

Даже если вы ответили на ваш вопрос, я оставлю это здесь для будущих читателей.

В отличие от Java, C или других подобных языков, переменные Python являются идентификаторами. Они являются просто «именами», чтобы идентифицировать «данные», хранящиеся под этим указателем c name. При этом позвольте мне доказать это на примере (относительно вашего вопроса)

class Person():
    def __init__(self, name: str, age: int):
        self.name = name
        self.age = age

    def _printer(self):
        print(f'Hello {self.name}, I see you are {self.age} years old!')


dave_1 = Person("Dave", 12)

dave_2 = Person(12, "Dave")

dave_1._printer()

dave_2._printer()

В классе Person я установил name как строку и age как целое число. Это просто для читабельности кода, так что если кто-то будет использовать мой класс, он будет знать, что ожидает класс.

Вывод при запуске этого модуля:

python3 test.py
Hello Dave, I see you are 12 years old!
Hello 12, I see you are Dave years old!

Из вывода, который вы видите, предоставленные типы данных не содержат лог c, но предназначены только для улучшения читабельности кода!

0 голосов
/ 07 января 2020

Вам нужно определить класс инициализации перед вызовом питонов.

self => Обозначает имя вашего объекта.

class Person:
    def __init__(self):
     self.name = str()
     self.age = int()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...