Как или нужно определить типы атрибутов в классе в Python - PullRequest
0 голосов
/ 02 мая 2019

Я новичок в python, и у меня есть несколько вопросов, касающихся типа атрибута в классе.Из опыта работы с C я понял, что вы всегда должны определять тип переменной прямо при ее создании, но в Python это не так.

Я пытаюсь создать класс с 3 атрибутами.Использование Python 3.7 в Pycharm.

Один из способов - сделать это так

class Solution:
        next: int
        f_star: tuple
        t_star: list

Другой способ - вот так

class Solution:
    def __init__(self,):
        self.next = int
        self.f_star = tuple
       self.t_star = list

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

node = Solution
node.t_star = 5

Затем я запускаю это, чтобы проверить тип атрибутов, прежде чем присваивать новое значение.Итак, я сделал это:

node = Solution
print(type(node.next))

В первом случае он правильно возвращает тип , но во втором случае он говорит:

AttributeError: type object 'Solution' has no attribute 'f_star'.

Может кто-нибудь пожалуйстаОбъясните, почему есть такая разница и в чем разница в двух способах определения класса.

И как или нужно определить тип атрибутов в классе в python?

1 Ответ

0 голосов
/ 02 мая 2019

Одним из основных моментов Python, отчасти для того, чтобы облегчить его для начинающих, а также для облегчения чтения, является то, что вам не нужно объявлять типы переменных. У этого есть "типизирование утки" (гугл это), и не является статически типизированным. Фактически, эта же переменная может измениться с целого числа на число с плавающей точкой и на строку, что имеет недостатки и преимущества.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...