Почему мой оператор match/case не работает для членов класса?Python

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Почему мой оператор match/case не работает для членов класса?

Сообщение Гость »


Наконец-то я использую версию Python с поддержкой оператора match и был удивлен, что один из моих case не совпал. Кажется, он отлично работает с локальными или глобальными переменными, но не с членами класса/объекта.

Я свел это к следующему примеру:

#!/usr/bin/env python3 глобл = Нет класс MyObj(объект): проходить проверка защиты (v): глобальный глобальный глобальный = 2 м = МойОбъект() м.вал = 2 местный = 2 совпадение v: общий случай: print(v, 'globl ОК', globl) совпадение v: случай локальный: print(v, 'локальный ОК', локальный) совпадение v: случай м.вал: print(v, 'm.val ОК', m.val) чек(1) чек(2) чек(3) ...что дает следующий результат:

tmp$ ./match-experiment.py 1 глоб ОК 1 1 местный ОК 1 2 глобальных ОК 2 2 местных ОК 2 2 м.вал ОК 2 3 глобально ОК 3 3 местных ОК 3 Похоже, что глобальная и локальная переменная используются «по ссылке», а член класса — «по значению». Таким образом, обычным переменным, как я и ожидал, присваивается совпадающее значение, но член класса case выполняется только тогда, когда текущее значение этой переменной равно совпадающему v< /код>.

Почему оператор match/case не работает для членов класса?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»