Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π”Π²ΠΎΠΉΠ½ΠΎΠ΅ Π½ΠΈΠΆΠ½Π΅Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π² Python

Π’ Π΄Π°Π½Π½ΠΎΠΌ руководствС ΠΌΡ‹ обсудим Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Π½ΠΈΠΆΠ½Π΅Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΅Π³ΠΎ использованиС Π² языкС программирования Python. Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ этому, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ обсудим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ аспСкты подчСркивания.

ПониманиС подчСркивания Python

Π‘ΠΈΠΌΠ²ΠΎΠ» подчСркивания(_) Π² Python Π½Π΅ прост. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для обозначСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² snake case; ΠΎΠ΄Π½Π°ΠΊΠΎ Python ΠΈΠΌΠ΅Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ ΠΈΠ· нас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

  1. for _ in range(20)
  2. __init__(self)
  3. _ = 10

Π‘ΠΈΠΌΠ²ΠΎΠ» подчСркивания(_) ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ значСния ΠΏΡ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… условиях.

НиТС ΡƒΠΊΠ°Π·Π°Π½ΠΎ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования подчСркивания(_):

  1. ИспользованиС подчСркивания Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅.
  2. Для игнорирования Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.
  3. ΠŸΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π² Ρ†ΠΈΠΊΠ»Π°Ρ….
  4. ΠŸΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ для раздСлСния Ρ†ΠΈΡ„Ρ€ чисСл.
  5. ИспользованиС подчСркивания для наимСнования.

Однако ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ соглашСния ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ.

Π­Ρ‚ΠΈ соглашСния ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ… ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° Π΄Π²Π° Ρ‚ΠΈΠΏΠ°:

  1. Π”Π²ΠΎΠΉΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅: __var
  2. Π”Π²ΠΎΠΉΠ½ΠΎΠ΅ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† подчСркивания: __var__

Π˜Ρ‚Π°ΠΊ, приступим.

Π”Π²ΠΎΠΉΠ½ΠΎΠ΅ Π²Π΅Π΄ΡƒΡ‰Π΅Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅

Π”Π²ΠΎΠΉΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для искаТСния ΠΈΠΌΠ΅Π½ΠΈ.

Бинтаксис Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ подчСркивания ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅:

 
__var 

Π”Π²ΠΎΠΉΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ Python ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ имя Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° подклассов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ.

ИзмСнСниС ΠΈΠΌΠ΅Π½ΠΈ. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python измСняСт имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°ΠΊΠΈΠΌ способом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ затруднСния ΠΏΡ€ΠΈ наслСдовании класса.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, основанный Π½Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1:

 
# defining a class 
class mySample(): 
    # using the __init__() function 
    def __init__(self): 
        self.
first = 10 self._second = 15 self.__third = 20 # instantiating the class myObj = mySample() # printing the directory of the object print(dir(myObj))

Π’Ρ‹Ρ…ΠΎΠ΄:

 ['__class__', 
'__delattr__', 
'__dict__', 
'__dir__', 
'__doc__', 
'__eq__', 
'__format__', 
'__ge__', 
'__getattribute__', 
'__gt__', 
'__hash__', 
'__init__', 
'__init_subclass__', 
'__le__', 
'__lt__', 
'__module__', 
'__ne__', 
'__new__', 
'__reduce__', 
'__reduce_ex__', 
'__repr__', 
'__setattr__', 
'__sizeof__', 
'__str__', 
'__subclasshook__', 
'__weakref__', 
'_mySample__third', 
'_second', 
'first'] 

ОбъяснСниС:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ класс ΠΊΠ°ΠΊ mySample() ΠΈ использовали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для объявлСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создали экзСмпляр класса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ myObj. НаконСц, ΠΌΡ‹ распСчатали ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ всС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² спискС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ self.first появится Π² спискС Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ self._second Ρ‚Π°ΠΊΠΆΠ΅ появится Π² спискС Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Однако ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния Π² случаС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ self .__ third.

Если ΠΌΡ‹ посмотрим Π½Π° список Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², ΠΌΡ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, извСстный ΠΊΠ°ΠΊ _mySample__third. Π­Ρ‚ΠΎ случай искаТСния ΠΈΠΌΠ΅Π½ΠΈ. Π­Ρ‚ΠΎ происходит, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ пСрСопрСдСлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² подклассах.

Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся Π² Ρ€Π°Π±ΠΎΡ‚Π΅ пСрСопрСдСлСния Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π³Π΄Π΅ ΠΌΡ‹ создали Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс, Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности класса mySample.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

 
# defining a class 
class mySample(): 
    # using the __init__() function 
    def __init__(self): 
        self.first = 10 
        self._second = 15 
        self. __third = 20 
# defining a child class 
class AnotherClass(mySample): 
    def __init__(self): 
        super().__init__() 
        self.first = "Variable Overridden" 
        self._second = "Variable Overridden" 
        self.__third = "Variable Overridden" 
# instantiating the child class 
myobj = AnotherClass() 
# printing the values of variables 
print(myobj.first) 
print(myobj._second) 
print(myobj.__third) 

Π’Ρ‹Ρ…ΠΎΠ΄:

 Variable Overridden 
Variable Overridden 
Traceback(most recent call last): 
  File "D:\Python\ternarypy.py", line 24, in  
    print(myobj.__third) 
AttributeError: 'AnotherClass' object has no attribute '__third' 

ОбъяснСниС:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ класс ΠΊΠ°ΠΊ mySample() ΠΈ использовали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для объявлСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс для класса mySample(), Π³Π΄Π΅ ΠΌΡ‹ использовали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ super() для наслСдования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса ΠΈ ΠΈΡ… ΠΎΡ‚ΠΌΠ΅Π½Ρ‹.

НаконСц, ΠΌΡ‹ создали Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс ΠΈ распСчатали значСния Π·Π°ΠΌΠ΅Ρ‰Π°ΡŽΡ‰ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ сообщСния ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΡŽΡ‚ΡΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ; ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π·Π²Π°Π»Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² случаС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«__thirdΒ». Π­Ρ‚ΠΎ происходит ΠΈΠ·-Π·Π° искаТСния ΠΈΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎ myObj .__ third Π½Π° _AnotherClass__third.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ этот элСмСнт с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2:

 
# defining a class 
class mySample(): 
    # using the __init__() function 
    def __init__(self): 
        self.first = 10 
        self._second = 15 
        self.__third = 20 
# defining a child class 
class AnotherClass(mySample): 
 
    def __init__(self): 
        super().__init__() 
        self.first = "Variable Overridden" 
        self._second = "Variable Overridden" 
        self.__third = "Variable Overridden" 
# instantiating the child class 
myobj = AnotherClass() 
# printing the value(s) of variable(s) 
print(myobj.
_AnotherClass__third)

Π’Ρ‹Ρ…ΠΎΠ΄:

 Variable Overridden 

ОбъяснСниС:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ использовали ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Β«_AnotherClass__thirdΒ» вмСсто ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«__thirdΒ» для доступа ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Underscore с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² классС. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, основанный Π½Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3:

 
# defining the class 
class myClass: 
    # initializing function 
    def __init__(self): 
        self.__myVar = "Welcome" 
    # defining another method to return the variable 
    def get_Var(self): 
        return self.__myVar 
# instantiating the class 
myObj = myClass() 
# it returns the "Welcome" which is a __var 
print(myObj.get_Var()) 
# here, an error is raised as stated before. It alters the variable's name 
print(myObj.
__myVar)

Π’Ρ‹Ρ…ΠΎΠ΄:

 Welcome 
Traceback(most recent call last): 
  File "D:\Python\ternarypy.py", line 15, in  
    print(myObj.__myVar) 
AttributeError: 'myClass' object has no attribute '__myVar' 

ОбъяснСниС:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ класс ΠΈ использовали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. НаконСц, ΠΌΡ‹ создали экзСмпляр класса ΠΈ распСчатали Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠ±ΠΎΠΈΠΌΠΈ способами.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒΒ» ΠΏΡ€ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Однако ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π·Π²Π°Π» ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ измСняСт имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ для ΠΈΠΌΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, основанный Π½Π° этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4:

 
# defining a class 
class myClass: 
    # defining a double-leading underscore function 
    def __myfunction(self): 
        return "Welcome" 
    # defining a function to call the above function 
    def call_function(self): 
        return self.
__myfunction() # instantiating the class myObj = myClass() # printing the value within the function print(myObj.call_function()) # raised an error print(myObj.__myfunction())

Π’Ρ‹Ρ…ΠΎΠ΄:

 Welcome 
Traceback(most recent call last): 
  File "D:\Python\ternarypy.py", line 14, in  
    print(myObj.__myfunction()) 
AttributeError: 'myClass' object has no attribute '__myfunction' 

ОбъяснСниС:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΠ· этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ распСчатали Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом искаТСния ΠΈΠΌΠ΅Π½. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΌΡ‹ объявим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ _myClass__myVar, ΠΈ ΠΌΡ‹ попытаСмся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ имя Underscore.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5:

 
# declaring a variable 
_myClass__myVar = "Welcome" 
# defining a class 
class myClass: 
    # defining a function to return the declared variable 
    def call_function(self): 
        return __myVar 
# instantiating the class 
myObj = myClass() 
# printing the value of the variable 
print(myObj. call_function()) 

Π’Ρ‹Ρ…ΠΎΠ΄:

Welcome 

ОбъяснСниС:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ объявили ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ класс. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° значСния объявлСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. НаконСц, ΠΌΡ‹ создали экзСмпляр класса ΠΈ Π²Ρ‹Π·Π²Π°Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ значСния этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π”Π²ΠΎΠΉΠ½Ρ‹Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ подчСркивания

Π’ языкС программирования, Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ Python, ΠΌΡ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ. Π­Ρ‚ΠΈ соглашСния ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ… извСстны ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Magic ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Dunder.

Бинтаксис Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ подчСркивания ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅:

 
__var__ 

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, основанный Π½Π° магичСских ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ….

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

 
# defining a class 
class myClass: 
    # using a magic method 
    def __init__(self): 
        # using a magic method as variable name 
        self. __myNum__ = 10 
# instantiating the class 
myObj = myClass() 
# printing the value of the variable 
print(myObj.__myNum__) 

Π’Ρ‹Ρ…ΠΎΠ΄:

10 

ОбъяснСниС:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ класс. ΠœΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ магичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ __init __() Π²Π½ΡƒΡ‚Ρ€ΠΈ класса, Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ ΠΊΠ°ΠΊ функция ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ объявили ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ __num__. НаконСц, ΠΌΡ‹ создали экзСмпляр класса ΠΈ распСчатали Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ Π΄Π°Π΅Ρ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Однако использованиС магичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² качСствС ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ являСтся Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π»ΡƒΡ‡ΡˆΠ΅ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π½ΠΈΡ… подальшС.

ΠœΠΈΡ…Π°ΠΈΠ» Русаков

Π˜Π·ΡƒΡ‡Π°ΡŽ Python вмСстС с Π²Π°ΠΌΠΈ, Ρ‡ΠΈΡ‚Π°ΡŽ, ΡΠΎΠ±ΠΈΡ€Π°ΡŽ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… программистов.

Π•Ρ‰Π΅ для изучСния:

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π² Google Π’Π°Π±Π»ΠΈΡ†Π°Ρ… (ярлык)

ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ содСрТимому

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅:

Иногда простыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ форматирования ΠΌΠΎΠ³ΡƒΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ использованиС Π²Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ….

Π₯отя сущСствуСт мноТСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² форматирования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°ΡΠΊΡ€Π°ΡˆΠΈΠ²Π°Π½ΠΈΠ΅ ячСйки ΠΈΠ»ΠΈ тСкста, Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ тСкста ΠΆΠΈΡ€Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ курсивом, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ стиля ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΡˆΡ€ΠΈΡ„Ρ‚Π°), часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ тСкста Π² Google Π’Π°Π±Π»ΠΈΡ†Π°Ρ….

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ всю ячСйку ΠΈΠ»ΠΈ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ тСкста Π² ячСйкС.

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ я ΠΏΠΎΠΊΠ°ΠΆΡƒ Π²Π°ΠΌ нСсколько простых ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² подчСркивания Π² Google Π’Π°Π±Π»ΠΈΡ†Π°Ρ… .

Π˜Ρ‚Π°ΠΊ, приступим!

ΠŸΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ вСсь тСкст Π² ячСйкС

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ вСсь тСкст Π² ячСйкС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

  • Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ячСйку, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ (ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ячССк)
  • Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² мСню ΠΎΠΏΡ†ΠΈΡŽ Π€ΠΎΡ€ΠΌΠ°Ρ‚.
  • НаТмитС Π½Π° ΠΎΠΏΡ†ΠΈΡŽ Β«ΠŸΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚Ρ‹ΠΉΒ».

Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Π΅ шаги автоматичСски ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ вСсь тСкст Π² Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ячСйкС (ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ячССк).

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Ρ‚Π΅ ΠΆΠ΅ шаги, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ сочСтаниС клавиш Control + Z

Π‘ΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠ΅ клавиш для подчСркивания Π² Google Π’Π°Π±Π»ΠΈΡ†Π°Ρ… β€” Control + U (ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Control ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ U) ΠΈΠ»ΠΈ Command + U ΠΏΡ€ΠΈ использовании Mac.

ΠŸΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст Π² ячСйкС

Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Ρ‚ΡŒ всю ячСйку, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ тСкста, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ вас Π΅ΡΡ‚ΡŒ тСкст Β«Hello WorldΒ» Π² ячСйкС, ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ слово Β«HelloΒ».

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ шаги для этого:

  • Π’Ρ‹Π΄Π΅Π»ΠΈΡ‚Π΅ ячСйку с тСкстом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ
  • Π”Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ячСйку (ΠΈΠ»ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ F2), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌ рСдактирования.
  • Π’Ρ‹Π΄Π΅Π»ΠΈΡ‚Π΅ тСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ Π² ячСйкС
  • Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«Π€ΠΎΡ€ΠΌΠ°Ρ‚Β», Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«ΠŸΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚Ρ‹ΠΉΒ» (ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ сочСтаниС клавиш Control + U).

Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Π΅ шаги ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст Π² ячСйкС.

ΠŸΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΠΈΡ‚Π΅ ячСйку (ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ячССк)

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ тСкст, Π° всю ячСйку.

Π­Ρ‚ΠΎ часто Π±Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ прСдставляСтС сумму столбца (ΠΈΠ»ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ вычислСниС) ΠΈ дСмонстрируСтС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ячСйкой, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выполняСтся вычислСниС.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ шаги, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ячСйку.

  • Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ячСйку, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ (Ссли Π²Ρ‹ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ячССк, Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΈΠΆΠ½ΠΈΠ΅)
  • Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡ΠΎΠΊ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов
  • НаТмитС Π½Π° ΠΎΠΏΡ†ΠΈΡŽ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹

Π­Ρ‚ΠΎ даст ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ ячСйки, которая выглядит Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ Π²Ρ‹ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΠ»ΠΈ ячСйку.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ Β«Π‘Ρ‚ΠΈΠ»ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹Β», Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ячССк Π² столбцС ΠΈ Π΄Π°Ρ‚ΡŒ всСм ячСйкам ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ Π³Ρ€Π°Π½ΠΈΡ†Π°Β» Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов.

Π‘ΠΎΠ²Π΅Ρ‚ ΠΎΡ‚ профСссионала: Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ Ρ‚Π΅ ячСйки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ тСкст, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ условного форматирования.

Π’ΠΎΡ‚ нСсколько способов ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ тСкст Π² ячСйкС ΠΈΠ»ΠΈ Π² самой ячСйкС.

НадСюсь, Π²Ρ‹ нашли этот ΡƒΡ€ΠΎΠΊ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ!

Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ символы подчСркивания Π² Python? |

Π― Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Π» внимания Π½Π° эти ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы, ΠΏΠΎΠΊΠ° Π½Π΅ ΡƒΠ·Π½Π°Π», Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Π’Π°Π½ Π”Π΅Ρ€ Π‘Π΅ΠΊΠ΅Π½ Π½Π° Unsplash

Π’Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Π»ΠΈΡΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ значСниями ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ подчСркивания ΠΏΡ€ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Python?

НСдавно я ΠΈΠ·ΡƒΡ‡ΠΈΠ» эту Ρ‚Π΅ΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΠ²Π΅ΠΆΠΈΡ‚ΡŒ Π² памяти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ основы, ΠΈ Ρ€Π΅ΡˆΠΈΠ» Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ это, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΌΠ½Π΅ это снова понадобится.

Π’ этом постС рассказываСтся ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способах использования символов подчСркивания. Он Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ:

  1. ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ символы подчСркивания: _foo
  2. ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ символы подчСркивания: foo_
  3. ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ символы подчСркивания: _
  4. Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ Π²Π΅Π΄ΡƒΡ‰ΠΈΠ΅ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ символы подчСркивания (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² dunder ): __bar__
  5. Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π² Π½Π°Ρ‡Π°Π»Π΅: __bar

Π—Π½Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ синтаксис ΠΈ ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ качСство ΠΊΠΎΠ΄Π° с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния чтСния ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ.

Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ стандартным соглашСниям ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ….

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π±Π΅Π· Π»ΠΈΡˆΠ½ΠΈΡ… слов рассмотрим нСсколько практичСских ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² πŸ”

Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π½Π° Medium? Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π·Π° 5 Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ² Π² мСсяц ΠΈ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство статСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΏΠΈΡˆΡƒ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, MLOps ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ систСм, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ спСциалистам ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ (ΠΈΠ»ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌ ΠΏΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌΡƒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ) ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ качСствСнный ΠΊΠΎΠ΄.

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Medium ΠΏΠΎ ΠΌΠΎΠ΅ΠΉ Ρ€Π΅Ρ„Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ ссылкС β€” Ahmed Besbes

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ всС истории АхмСда БСсбСса (ΠΈ тысяч Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² Π½Π° Medium). Π’Π°Ρˆ члСнский взнос Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ поддСрТиваСт…

medium.com

ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ.

Π­Ρ‚ΠΎ скорСС подсказка ΠΏΠΎ синтаксису для программиста ΠΈ Π½Π΅ примСняСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Python, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊ этим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Ρ‚Π΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌ способом ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ скрипта.

Однако Π±Ρ‹Π²Π°Π΅Ρ‚ ситуация, ΠΊΠΎΠ³Π΄Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅ΠΉΡΡ с символа подчСркивания.

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» module.py , Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ с подстановочными Π·Π½Π°ΠΊΠ°ΠΌΠΈ (хотя это Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ рСкомСндуСтся) ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΈΠ»ΠΈ Π³Π΄Π΅-Ρ‚ΠΎ Π΅Ρ‰Π΅, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ Π² Π½Π°Ρ‡Π°Π»Π΅ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ доступны Π² пространствС ΠΈΠΌΠ΅Π½.

Однако, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ Ρ€Π°Π½Π΅Π΅, _private_variable 9Доступ ΠΊ 0029 всС Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, Ссли Π²Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² классах для опрСдСлСния "Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ…" Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ². Π― Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΠ» Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Python Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. Π’Π΅Π΄ΡƒΡ‰Π΅Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ остаСтся ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ΅.

Если Ρƒ вас Π΅ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈΠ·Π²Π½Π΅ класса, просто ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ для ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… вычислСний, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ добавлСния ΠΊ Π½ΠΈΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ подчСркивания β€” ΠΈ это послуТит подсказкой для Π²Ρ‹ ΠΈ ваша IDE.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€: рассмотрим класс Employee, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ _seniority , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, срСди ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для расчСта компСнсационного ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ _seniority ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΈΠ·Π²Π½Π΅ класса.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π° самом Π΄Π΅Π»Π΅ являСтся Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом Π² Python, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ class , def , type , object ΠΈ Ρ‚. Π΄.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π² качСствС соглашСния ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ….

  class_ = "A"  

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ символы подчСркивания.

Π’ΠΎΡ‚ ΠΎΠ½ΠΈ Π² Π΄Π²ΡƒΡ… словах.

β†’ Для опрСдСлСния Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1
Если Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ индСкс Ρ†ΠΈΠΊΠ»Π° for, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΈΠΌ символом подчСркивания.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #2
Если ваша функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ· пяти элСмСнтов, Π½ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° ΠΈΠ· Π½ΠΈΡ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ для ΠΈΠΌΠ΅Π½ΠΈ Ρ‚Ρ€Π΅Ρ… ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ элСмСнтов.

β†’ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ послСднСй ΠΎΡ†Π΅Π½ΠΊΠΈ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅ Python сохраняСтся Π² Β«_Β».

β†’ Для использования Π² качСствС Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ раздСлитСля для Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ

Π’ соотвСтствии с PEP 515 ΠΊ числовым Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°ΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ символы подчСркивания, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… чисСл.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ дСсятичныС числа ΠΏΠΎ тысячам.

Π”Π²ΠΎΠΉΠ½Ρ‹Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ символы подчСркивания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для опрСдСлСния ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ класса, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ dunder (сокращСниС ΠΎΡ‚ D Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… Under ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΡ†Π΅Π½ΠΊΠΈ).

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Dunder β€” это Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ всС Ρ€Π°Π²Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ. Они ΠΈΠΌΠ΅ΡŽΡ‚ особоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. НапримСр:

  • __init__ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ конструктор класса
  • __call__ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ 9 функция.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Python Π²Π²ΠΎΠ΄ΠΈΡ‚ это соглашСниС ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ основныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ модуля ΠΈ опрСдСляСмыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… dunder, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ этой ссылкС.

Π”Π²ΠΎΠΉΠ½Ρ‹Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ подчСркивания ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для искаТСния ΠΈΠΌΠ΅Π½.

ИзмСнСниС ΠΈΠΌΠ΅Π½ΠΈ β€” это процСсс, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ измСняСт имя Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π½ Π² подклассах.

Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ класс:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° car с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° dir .

ΠœΡ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ†Π²Π΅Ρ‚ ΠΈ _ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ доступны, Π½ΠΎ Π½Π΅ __Π±Ρ€Π΅Π½Π΄ .

Однако Π΅ΡΡ‚ΡŒ _Car__brand 9ВмСсто Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° 0029. Π­Ρ‚ΠΎ искаТСниС ΠΈΠΌΠ΅Π½ΠΈ: ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ добавляСт ΠΏΠ΅Ρ€Π΅Π΄ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ ΠΎΠ΄ΠΈΠ½ Β«_Β» плюс имя класса. Π­Ρ‚ΠΎ сдСлано для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ пСрСопрСдСлСния значСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° __brand Π² подклассах.

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим подкласс ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° extended_car :

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚: _ExtendedCar_brand Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ _Car_brand ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса всС Π΅Ρ‰Π΅ Ρ‚Π°ΠΌ.

Если ΠΌΡ‹ попытаСмся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ этим Π΄Π²ΡƒΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ:

ΠœΡ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° __brand (ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса) Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ, хотя ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ класса ExtendedCar ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ это.

Π― Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² самых Ρ€Π°Π·Π½Ρ‹Ρ… контСкстах.

Π£Π·Π½Π°Ρ‚ΡŒ ΠΎ Π½ΠΈΡ… Π±Ρ‹Π»ΠΎ вСсСло, ΠΈ, ΠΊΠ°ΠΊ всСгда, Π²ΠΎΡ‚ ΠΌΠΎΠΉ список рСсурсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π΅Ρ‰Π΅ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² Ρ‚Π΅ΠΌΡƒ.

  • https://towardsdatascience.com/5- different-meanings-of-underscore-in-python-3fafa6cd0379
  • https://www.python.org/dev/peps/pep-0515/
  • https: //www.python.org/dev/peps/pep-0008/
  • Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π² французском Π±Π»ΠΎΠ³Π΅ ΠΎ ДандСрсС: https://he-arc.github.io/livre-python/dunders/index.html
  • https: //www.section.io/engineering-education/dunder-methods-python/

ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, Ссли Π²Ρ‹ зашли Ρ‚Π°ΠΊ Π΄Π°Π»Π΅ΠΊΠΎ, я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ вас Π·Π° вашС врСмя ΠΈ надСюсь, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ ΠΎΠ± ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… аспСктах языка программирования Python.

А Ссли Π²Π°ΠΌ интСрСсно ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Ρ€ΡŽΠΊΠ°Ρ… Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΌΠΎΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ посты ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, послСдний.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² функциях Python. Π”ΠΎ скорого! πŸ‘‹

python β€” Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°?

ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π² Π½Π°Ρ‡Π°Π»Π΅:

Python Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ настоящих Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². ВмСсто этого ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ слСдуСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ API.

 класс BaseForm(StrAndUnicode):
    
    Π·Π°Ρ‰ΠΈΡ‚Π° _get_errors (я):
        Β«Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ErrorDict для Π΄Π°Π½Π½Ρ‹Ρ…, прСдоставлСнных для Ρ„ΠΎΡ€ΠΌΡ‹Β»
        Ссли self._errors Ρ€Π°Π²Π½ΠΎ None:
            self.full_clean ()
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ self._errors
    ошибки = свойство (_get_errors)
 

(Π­Ρ‚ΠΎΡ‚ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° Π±Ρ‹Π» взят ΠΈΠ· исходного ΠΊΠΎΠ΄Π° Django: django/forms/forms.py). Π’ этом ΠΊΠΎΠ΄Π΅ ошибок являСтся общСдоступным свойством, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ этим свойством, _get_errors, являСтся «частным», поэтому Π²Π°ΠΌ Π½Π΅ слСдуСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ.

Π”Π²Π° подчСркивания Π² Π½Π°Ρ‡Π°Π»Π΅:

Π­Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹. Π•Π³ΠΎ Π½Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания частного ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π•Π³ΠΎ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ пСрСопрСдСлСния вашСго ΠΌΠ΅Ρ‚ΠΎΠ΄Π° подклассом ΠΈΠ»ΠΈ случайного доступа. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 класс А(ΠΎΠ±ΡŠΠ΅ΠΊΡ‚):
    Π΄Π΅Ρ„ __тСст(сам):
        print "Π― тСстовый ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² классС A"
    Π·Π°Ρ‰ΠΈΡ‚Π½Ρ‹ΠΉ тСст (сам):
        Π‘Π°ΠΌΠΎΠΎΡ†Π΅Π½ΠΎΡ‡Π½Ρ‹ΠΉ тСст()
 
а = А()
тСст()
# a. __test() # Π­Ρ‚ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ошибкой AttributeError
a._A__test() # Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚! ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ искаТСнному ΠΈΠΌΠ΅Π½ΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ!
 

Π’Ρ‹Π²ΠΎΠ΄:

 $ python test.py
Π― тСстовый ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² классС А
Π― тСстовый ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² классС А
 

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создайтС подкласс B ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ настройку для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° __test

 класса B(A):
    Π΄Π΅Ρ„ __тСст(сам):
        print "Π― тСстовый ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² классС B"
Π± = Π’()
Π±.тСст()
 

Π’Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚...

 $ python test.py
Π― тСстовый ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² классС А
 

Как ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, B.test() Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ B.__test(), ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ. Но Π½Π° самом Π΄Π΅Π»Π΅ это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ для __. Π”Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ __test() автоматичСски ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ (ΠΈΡΠΊΠ°ΠΆΠ°ΡŽΡ‚ΡΡ) Π² _A__test() ΠΈ _B__test(), поэтому ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ случайно. Когда Π²Ρ‹ создаСтС ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ с __, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΡ‚ΠΎ-Π»ΠΈΠ±ΠΎ ΠΌΠΎΠ³ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΈ Π²Ρ‹ Π½Π°ΠΌΠ΅Ρ€Π΅Π²Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π΅Π³ΠΎ собствСнного класса.

Π”Π²Π° символа подчСркивания Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅:

Когда ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ€ΠΎΠ΄Π΅ __this__ , Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ.

Автор записи

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *