1. Python / Говнокод #27542

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    class Bagor:
    	r = []
    	
    	def __init__(self, val):
    		self.r.append(val)
    		
    	def get(self):
    		return self.r[0]
    		
    kakoi = Bagor(1)
    bagor = Bagor(2)
    print([kakoi.get(), bagor.get()])

    https://ideone.com/K7tADi

    Запостил: 3_dar, 29 Июля 2021

    Комментарии (26) RSS

    • Когда оказывается, что присваивание в классе создает переменную класса (аналог static в С++), а не поле объекта.
      Да, мне тоже проще написать и проверить, чем прочитать документацию.
      Ответить
      • > чем прочитать документацию

        Ага. Сейчас пойду весь стандарт крестов прочитаю, прежде чем начать программировать.
        Ответить
        • Не, ну кресты я в свое время (в детстве) и по книжкам учил (не стандарт, но все же), и лекции слушал... поэтому база есть. А теперь новые языки только так и изучаю: тык, пык, ок гугл %lang_name% как записать в файл пример.
          Ответить
          • Какие-то вы все милениалы

            А я бумер, я по языку книжку читаю
            Ответить
            • Happy English
              Ответить
            • > по языку книжку читаю

              Для мейнстримных языков хватит и короткого туториала, имхо. Концепции один фиг более-менее похожие.
              Ответить
          • Это ты не языки изучаешь. Язык — это подход к решению задачи и философия, а не буковки. Ты ж не поймёшь по кодесемплам, что в идеологии языка иммутабельные данные и вместо циклов мапы и функциональный подход.
            Ответить
            • Пойму.
              Ответить
            • К пхп это тоже относится?
              Ответить
            • Конечно не поймет

              знаешь сколько есть на свете программистов, которые выучили бейсик, и потом на всех языках пишут, как на бейсике?
              Ответить
            • Какая философия например у брейнфака?
              Ответить
    • def __init__(self, val):
      	self.r = []
      	self.r.append(val)
      Починил
      https://ideone.com/neoZei
      Ответить
    • а вы говорите, джаваскрип плохой
      Ответить
    • Ого, инью открыл для себя статические поля класса?:)
      Ответить
      • "PyCharm" начинает подсвечивать инициализацию говна, которого нету в классе
        class Pituh:
            def kok(self):
                self.r = 42

        я и начал добавлять
        class Pituh:
            r = None
            def kok(self):
                self.r = 42


        Потом поймал такой багор, когда начал списки использовать
        Ответить
        • Инь, попробуй пройти туториал.
          Потратишь час, но жить станет легче
          https://docs.python.org/3/tutorial/classes.html#class-and-instance-variables

          Правильно так
          class Petuh:
              def __init__(self):
                  self.instance_var = 42 # создаем поле инстанса
          Ответить
          • Некогда мне.
            То есть нужно было писать

            class Pituh:
                def __init__(self):
                    self.r = None
                def kok(self):
                    self.r = 42

            ?
            Ответить
            • Да, верно.

              Есть еще датаклассы с сахаром
              https://docs.python.org/3/library/dataclasses.html
              Ответить
    • Тебе нужны "dataclass" или "pydantic".
      import dataclasses
      from typing import List
      
      import pydantic
      
      
      @dataclasses.dataclass
      class Nebagor_1:
          r: List[int]
          
          def get(self) -> None:
              return self.r[0]
      
      
      class Nebagor_2(pydantic.BaseModel):
          r: List[int]
          
          def get(self) -> None:
              return self.r[0]
      
      
      n_1_1 = Nebagor_1(r=[16])
      n_1_1.r.append(17)
      n_1_2 = Nebagor_1(r=[42])
      n_1_2.r.append(43)
      
      n_2_1 = Nebagor_2(r=[16])
      n_2_1.r.append(17)
      n_2_2 = Nebagor_2(r=[42])
      n_2_2.r.append(43)
      
      print(n_1_1, n_1_2)
      print(n_2_1, n_2_2)
      Ответить
      • pydartic
        Ответить
        • Pidora Linux
          Ответить
          • Линукс пидора – это bullseye debian Arch Linux.

            Кстати, Arch с английского переводится как выгибаться, типа как когда один пидор омежный выгибается, а другой ему вставляет. Вот каким дистром я пользуюсь)
            Ответить
          • Используется ли Pidora в деятельности Всероссийского научно-исследовательского геологического института им. А.П. Карпинского?
            https://vsegei.ru/ru/
            Ответить
            • Кстати, почему его назвали «ВСЕГЕИ»? Он же научно-исследовательский, значит, должно быть «ВСЕНИГЕИ».
              Ответить
        • pydroid
          Ответить

    Добавить комментарий