Что означает "=>" (стрелка, образованная из равно & больше чем) в Python? - PullRequest
0 голосов
/ 09 марта 2020

Как вы можете видеть в следующем коде

def __str__(self):
        return f"User: {self.observer.pk} => Habit: {self.habit.pk}"

Там =>. Что это значит?

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Метод __str__ класса python определяет, как этот класс будет преобразован в строку. Я написал небольшой пример с использованием предоставленного вами кода, чтобы показать, что:

class TestHelper:

    def __init__(self, pk):
        self.pk = pk


class Test:

    def __init__(self, observer_pk, habit_pk):
        self.observer = TestHelper(observer_pk)
        self.habit = TestHelper(habit_pk)

    def __str__(self):
        return f"User: {self.observer.pk} => Habit: {self.habit.pk}"


t = Test(5, 8)
print(t)

Если вы запустите этот код, результат будет напечатан User: 5 => Habit: 8, так как метод print автоматически преобразует свои аргументы в строки , Вы можете заменить '=>' на то, что хотите, и вместо этого он будет напечатан. Если вы закомментируете метод __str__, будет напечатан <__main__.Test object at some_hex_address> - это то, что делает метод __str__ по умолчанию, унаследованный от класса object. Вы можете преобразовать свой класс в строку, как хотите - это полностью ваше дело

0 голосов
/ 09 марта 2020

Методы с двойным нижним баллом, такие как str , называются методами magic / dunder.

Задание ' str ' - Вы можете определить строковое представление для Object.

f'blabla {some_variable} '- это f-строка. Вы можете получить доступ к переменной в строке, используя {} скобки.

давайте предположим, что self.observer.pk равен 12, а self.habit.pk равен 2, поэтому:

Этот код будет определять для объекты должны иметь строковое представление, например 'User: 12 => Habit: 2' Thats the string.

Cheers Fenrir

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