for example i have myClassFile.py file with code as follow:
class myClass:
def first(self):
return 'tea'
def second(self):
print(f'drink {self.first()}')
then i have run.py file with code as follow:
from myClassFile import myClass
class_ = myClass()
class_.second()
which when i run will output
>>> 'drink tea'
how to prevent someone to write below code on run.py file or outside myClass ?
class_.first()
so that if they used that method outside myClass class it will be an error or some sort
You can add a level of protection around methods and attributes by prefixing them with __
.
But you can't make them totally private (as far as I know), there's always a way around, as shown in example below.
class MyClass:
def __init__(self):
self.__a = 1
def __method(self):
return 2
obj = MyClass()
# obj.__a # raise an exception
# obj.__method() # raise an exception
print(dir(obj)) # you can see the method and attributes have been renamed !
print(obj._MyClass__a) # 1
print(obj._MyClass__method()) # 2