Почему я только конвенция, а не настоящее ключевое слово Python?

Насколько я знаю, я – очень сильное соглашение, и это не действительно зарезервированное ключевое слово в Python. Java и C # имеют это ключевое слово. Мне действительно кажется странным, что они не сделали зарезервированное ключевое слово для него в Python. Есть ли причина в этом?

  • Где использовать файл pyc
  • Использование «супер» при подклассификации класса python, которое не является производным от «object» (old-style?)
  • Модули движка google - длительные задачи> 10 минут
  • Не удается добавить к возвращенному списку?
  • Как проверить версию модулей python?
  • Есть ли более быстрый способ суммировать арифметическую последовательность чисел в Python?
  • Cesar's Cipher с использованием python, может немного помочь
  • Ведение подсчета в понимании списка python
  • 3 Solutions collect form web for “Почему я только конвенция, а не настоящее ключевое слово Python?”

    Гвидо ван Россум рассказал о том, почему явное я должен оставаться: http://neopythonic.blogspot.com/2008/10/why-explicit-self-has-to-stay.html

    Я считаю, что пост дает некоторое представление о дизайнерских решениях, касающихся явного «я».

    Поскольку self является просто параметром функции, как и любой другой параметр. Например, следующий вызов:

     a = A ()
     ах ()
    

    по существу, преобразуется в:

     a = A ()
     Ах (а)
    

    Не делая self резервированное слово, получило удачный результат, а также для методов класса, вы можете переименовать первый параметр в нечто другое (обычно cls ). И, конечно же, для статических методов первый параметр не имеет отношения к экземпляру, на который он вызывается, например:

     класс A:
         def method (self):
             проходить
    
         @classmethod
         def class_method (cls):
             проходить
    
         @staticmethod
         def static_method ():
             проходить
    
     класс B (A):
         проходить
    
     b = B ()
     b.method () # self - b
     b.class_method () # cls - B
     b.static_method () # ни один параметр не прошел
    

    Потому что метод – это просто функция, для которой первый параметр используется для передачи объекта. Вы можете написать такой метод:

     class Foo(object): pass def setx(self, x): self.x = x Foo.setx = setx foo = Foo() foo.setx(42) print foo.x # Prints 42. 

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

    Python - лучший язык программирования в мире.