Size: a a a

Хирьянов Т.Ф., Практика программирования на Python 3 (2019)

2020 September 29

m

mr.slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
но принято что с подчеркиваний начинаются приватные методы
источник

m

mr.slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
# Creating a class
class A:
   # Declaring public method
   def fun(self):
       print("Public method of class A")
   # Declaring protected method
   def _fun(self):
       print("Protected method of class A")
       self.__fun()
   # Declaring private method
   def __fun(self):
       print("Private method of class A")

class B(A):
   # Declaring public method
   def fun(self):
       print("Public method of class B")
       self._fun()
   # Declaring private method
   def __fun(self):
       print("Private method of class B")

       
obj = B()

obj.fun()

>>Public method of class B
>>Protected method of class A
>>Private method of class A
источник

m

mr.slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
obj._fun()

>>Protected method of class A
>>Private method of class A
источник

m

mr.slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
но
obj.__fun()
>>AttributeError: 'B' object has no attribute '__fun'
источник

m

mr.slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
но используя манглинг
obj._A__fun()
>>Private method of class A
obj._B__fun()
>>Private method of class B
источник

m

mr.slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
print(B.__dict__)
>>{'__module__': '__main__', 'fun': <function B.fun at 0x0000017768917620>, '_B__fun': <function B.__fun at 0x0000017768B17268>, '__doc__': None}
то есть при создании словаря объекта B и A - имя метода которое начинается с двойного подчеркивания становится
_classname__methodname
источник

m

mr.slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
можно вот так сделать:
obj.__fun = obj.__getattribute__('_A__fun')
obj.__fun()

>>Private method of class A
источник

m

mr.slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
obj.__fun = obj.__getattribute__('_A__fun')
print(obj.__dict__)
{'__fun': <bound method A.__fun of <__main__.B object at 0x000002AFC36F8470>>}
источник

😍

😍 in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleksii
Не готов сказать, я пока нуб полнейший, а код никто не вычитывает)
нуб полнейший так с классами не разберется 🤣
источник

😍

😍 in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleksii
Не готов сказать, я пока нуб полнейший, а код никто не вычитывает)
А в файл я например сохранял имя игрока и его очки
источник

O

Oleg in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
источник

O

Oleg in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleksii
Привет всем! Подскажите пожалуйста, как решать последнее задание с таблицей.
Sqlitе в стандартной библиотеке.
источник

O

Oleg in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
В плей листе вроде как как раз разбирают как таблицу игроков сделать.
источник

E

Eagint in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Та зачем использовать на каждый чих sql? Обычного жсона на сохранение 10 результатов ник:рекорд хватит
источник

O

Oleg in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Eagint
Та зачем использовать на каждый чих sql? Обычного жсона на сохранение 10 результатов ник:рекорд хватит
Я в образовательных целях использовал.
источник

ДК

Даниил Кустов... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
mr.slavik
# Creating a class
class A:
   # Declaring public method
   def fun(self):
       print("Public method of class A")
   # Declaring protected method
   def _fun(self):
       print("Protected method of class A")
       self.__fun()
   # Declaring private method
   def __fun(self):
       print("Private method of class A")

class B(A):
   # Declaring public method
   def fun(self):
       print("Public method of class B")
       self._fun()
   # Declaring private method
   def __fun(self):
       print("Private method of class B")

       
obj = B()

obj.fun()

>>Public method of class B
>>Protected method of class A
>>Private method of class A
А че в питоне кстати че инкапсуляции нет жестокой, чтобы по рукам прям било?
источник

ДК

Даниил Кустов... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Технические ограничения, или просто не захотели?
источник

m

mr.slavik in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Даниил Кустов
А че в питоне кстати че инкапсуляции нет жестокой, чтобы по рукам прям било?
нет
источник

ДК

Даниил Кустов... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Шо?
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
а в чем смысл жестко-приватных методов?
источник