私有权限

私有权限

在python中,某些方法和属性不想继承给子类,把这些属性和方法设置成私有。

设置私有权限的方法:在属性名和方法名前面加上两个下划线__

class Master(object):
	def __init__(self):
		self.kongfu = '[古法煎饼果子配方]'

	def make_cake(self):
		print(f'运用{self.kongfu}制作煎饼果子')

class School(object):
	def __init__(self):
		self.kongfu = '[黑马煎饼果子配方]'

	def make_cake(self):
		print_cake(f'运用{self.kongfu}制作煎饼果子')

class Prentice(School, Master):
	def __init__(self):
		self.kongfu = '[独创煎饼果子配方]'
		# 定义私有属性
		self.__money = 2000000

	# 定义私有方法
	def __info_print(self):
		print(self.kongfu)
		print(self.__money)

	def make_cake(self):
		self.__init__()
		print(f'运用{self.kongfu}制作煎饼果子')

class Tusun(Prentice):
	pass

daqiu = Prentice()
# 对象不能访问私有属性和私有方法
# print(daqiu.__money)
# daqiu.__info_print()

xiaoqiu = Tusun()
# 子类无法继承父类的私有睡醒和私有方法
# print(xiaoqiu.__money) # 无法访问实例属性__money
# xiaoqiu.__info_print()

注意:私有属性和私有方法只能在类里面访问和修改

获取和修改私有属性值

在python中,一般定义函数名get_xx 用来获取私有属性,定义set_xx 用来修改私有属性

class Master(object):
	def __init__(self):
		self.kongfu = '[古法煎饼果子配方]'

	def make_cake(self):
		print(f'运用{self.kongfu}制作煎饼果子')

class School(object):
	def __init__(self):
		self.kongfu = '[黑马煎饼果子配方]'

	def make_cake(self):
		print_cake(f'运用{self.kongfu}制作煎饼果子')

class Prentice(School, Master):
	def __init__(self):
		self.kongfu = '[独创煎饼果子配方]'
		# 定义私有属性
		self.__money = 2000000

	获取私有属性
	def get_money(self):
		return self.__money

	# 修改私有属性
	def set_money(self):
		self.__money = 500

	# 定义私有方法
	def __info_print(self):
		print(self.kongfu)
		print(self.__money)

	def make_cake(self):
		self.__init__()
		print(f'运用{self.kongfu}制作煎饼果子')

class Tusun(Prentice):
	pass

# 徒孙类
class Tusun(Prentice):
	pass

daqiu = Prentice()

xiaoqiu = Tusun()
# 调用get_money()函数获取私有属性money的值
print(xiaoqiu.get_money())
# 调用set_money()函数修改私有属性money的值
xiaoqiu.set_money()

print(xiaoqiu.get_money())