Python 中的类中可以定义私有函数(private function),它们的名字以两个下划线开头。私有函数只能在类内部访问,类外部无法访问。Python 中没有真正的私有函数,但是有一种形式叫做 name mangling,访问私有函数通过 _ClassName__private_function()
形式实现。
下面是使用私有函数的步骤:
- 在函数名前添加两个下划线,例如
def __private_function(self):
- 在类内部调用私有函数时,使用
self.__private_function()
形式
私有函数的作用在于,避免在类外部直接访问和修改内部实现的函数和属性,增强类的封装性和安全性。
代码示例:
class User:
def __init__(self, name, age):
self.name = name
self.age = age
def __display_name(self):
print(f"My name is {self.name}")
def get_info(self):
self.__display_name()
print(f"I am {self.age} years old")
user1 = User("Tom", 18)
user1.get_info()
输出:
My name is Tom
I am 18 years old
在上面的示例中,我们定义了一个 User
类,其中有一个私有函数 __display_name()
,用于打印用户的姓名。在 get_info()
函数中,我们调用了 self.__display_name()
来使用私有函数。
代码示例2:
class BankAccount:
def __init__(self, name, balance):
self.name = name
self.__balance = balance
def deposit(self, amount):
self.__balance += amount
def withdraw(self, amount):
if amount > self.__balance:
print("Sorry, you don't have enough balance.")
else:
self.__balance -= amount
def get_balance(self):
return self.__balance
account1 = BankAccount("John", 1000)
account1.withdraw(500)
print(account1.get_balance())
输出:
500
在上面的示例中,我们定义了一个 BankAccount
类,其中有一个私有变量 __balance
,它存储用户的余额。在 withdraw()
函数中,我们检查用户是否有足够的余额进行取款。如果用户没有足够的余额,我们将打印一条错误消息。否则,我们将从余额中减去取款金额。在 get_balance()
函数中,我们返回用户的余额。
使用私有函数和变量,可以隐藏类的内部实现和数据,并提高代码的可维护性。