Why should you use private and protected methods instead of defining all methods as public in Python?
Answer
Private and protected methods decrease visibility of method. They signal that the method shouldn't be called from outside of the class.
This simplifies refactoring, because you know that the private and protected methods shouldn't be called from outside of the class and when you are renaming the methods, changing their parameters or return value data type, you know that you need to review only callers from within the class for the private method and from within the class and its subclasses for the protected method.
Note that in Python private and public methods are just named conventions, in reality nothing is preventing those methods from being called from outside of class. However, it is a good practice not to do so because the code author has communicated via the naming convention: "Hey, don't call this method from outside..."
Related Python job interview questions
What does *args mean in Python?
Python JuniorHow do you reraise an exception in Python?
Python JuniorWhat is a static method in Python?
Python JuniorWhy should you convert your private class methods to static methods in Python whenever possible?
Python JuniorHow do you comment out code in Python using multi-line comment?
Python Junior
Chat
Oh, the operator is not available. Leave us your comments. We will answer all your questions as soon as possible.
e
@@xeDO0
1'"
e'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
L7oVYP7m')) OR 312=(SELECT 312 FROM PG_SLEEP(15))--
A1v25QPv') OR 393=(SELECT 393 FROM PG_SLEEP(15))--
kxT46vOm' OR 479=(SELECT 479 FROM PG_SLEEP(15))--
VTgcz37T'; waitfor delay '0:0:15' --
1 waitfor delay '0:0:15' --
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
if(now()=sysdate(),sleep(15),0)
-1" OR 3+906-906-1=0+0+0+1 --
-1" OR 2+906-906-1=0+0+0+1 --
-1' OR 3+316-316-1=0+0+0+1 or '8BoDIAd6'='
-1' OR 2+316-316-1=0+0+0+1 or '8BoDIAd6'='
-1' OR 3+137-137-1=0+0+0+1 --
-1' OR 2+137-137-1=0+0+0+1 --
-1 OR 3+877-877-1=0+0+0+1
-1 OR 2+877-877-1=0+0+0+1
-1 OR 3+418-418-1=0+0+0+1 --
-1 OR 2+418-418-1=0+0+0+1 --
e
e