Python функций: их можно сделать приватными? - PullRequest
1 голос
/ 27 марта 2020

Мне нужна функция, которую я буду использовать только внутри своего класса. Можно ли это определять как другие методы или лучше где-нибудь спрятать?

class Test:

    def __init__(self,a,b):
        self.a=a
        self.b=b

    def sayhi(self):
        print('hi')

    def printa(self,c):
        self.sayhi()
        print('A+C=',self.a+c)

    def printb(self,c):
        self.sayhi()
        print('B+C=',self.b+c) 

Ответы [ 2 ]

4 голосов
/ 27 марта 2020

В отличие от java и некоторых других объектно-ориентированных языков Python не имеет закрытых методов. Вы можете просто добавить подчеркивание перед именем метода, чтобы указать, что это закрытый метод. NB: это имеет значение только для вас и игнорируется переводчиком. Метод все еще может быть вызван вне класса

3 голосов
/ 27 марта 2020

Сделайте это "частной" функцией

Используйте соглашение python для того, чтобы сделать функцию "частной" по контракту.

См. https://dbader.org/blog/meaning-of-underscores-in-python

class Test:
    def __init__(self,a,b):
        self.a=a
        self.b=b

    def _sayhi(self):
        print('hi')

    def printa(self,c):
        self._sayhi()
        print('A+C=',self.a+c)

    def printb(self,c):
        self._sayhi()
        print('B+C=',self.b+c) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...