目录
- 什么是私有函数和私有变量
- 私有函数与私有变量的定义方法
什么是私有函数私有变量
- 无法被实例化后的对象调用的类中的函数与变量
- 类内部可以调用私有函数与变量
- 只希望类内部业务调用使用,不希望被使用者调用
私有函数与私有变量的定义方法
-
在变量或函数前添加__(2个下横线),变量或函数名后边无需添加
实战
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2021/8/15 12:08
# @Author : InsaneLoafer
# @File : object_private.py
class Cat(object):
__cat_type = 'cat' # 创建私有属性
def __init__(self, name, sex):
self.name = name
self.__sex = sex # 构造函数内创建私有属性
def run(self):
# pass # 占位符,当不知道程序要写什么时,写上pass,不然程序会报错
result = self.__run()
print(result)
def __run(self):
return f'{self.__cat_type} 小猫 {self.name} {self.__sex}开心地奔跑着'
def jump(self):
result = self.__jump()
print(result)
def __jump(self):
return f'{self.__cat_type} 小猫 {self.name} {self.__sex} 开心地跳着'
class Test(object):
pass # 占位符,当不知道程序要写什么时,写上pass,不然程序会报错
cat = Cat(name='花生', sex='boy')
cat.run()
cat.jump()
# cat.__run() # 会报错
print(dir(cat))
print(cat._Cat__jump()) # 这样可以调用私有函数
# print(cat.__sex) # 会报错
print(cat._Cat__sex)
cat 小猫 花生 boy开心地奔跑着
cat 小猫 花生 boy 开心地跳着
['_Cat__cat_type', '_Cat__jump', '_Cat__run', '_Cat__sex', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'jump', 'name', 'run']
cat 小猫 花生 boy 开心地跳着
boy
Process finished with exit code 0