Python3 --- 私有化

通过在方法或者在属性上添加2个下划线(__)表示私有化,相当于Java中的private

  • xx: 公有变量
  • _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问
  • __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)
  • __xx__:双前后下划线,用户名字空间的魔法对象或属性。例如:__init__ , __ 不要自己发明这样的名字
  • xx_:单后置下划线,用于避免与Python关键词的冲突

#coding=utf-8

class Person(object):
    def __init__(self, name, age, taste):
        self.name = name
        self._age = age 
        self.__taste = taste

    def showperson(self):
        print(self.name)
        print(self._age)
        print(self.__taste)

    def dowork(self):
        self._work()
        self.__away()


    def _work(self):
        print('my _work')

    def __away(self):
        print('my __away')

class Student(Person):
    def construction(self, name, age, taste):
        self.name = name
        self._age = age 
        self.__taste = taste

    def showstudent(self):
        print(self.name)
        print(self._age)
        print(self.__taste)

    @staticmethod
    def testbug():
        _Bug.showbug()

#模块内可以访问,当from  cur_module import *时,不导入
class _Bug(object):
    @staticmethod
    def showbug():
        print("showbug")

s1 = Student('jack', 25, 'football')
s1.showperson()
print('*'*20)

#无法访问__taste,导致报错
#s1.showstudent() 
s1.construction('rose', 30, 'basketball')
s1.showperson()
print('*'*20)

s1.showstudent()
print('*'*20)

Student.testbug()

注意:

  • 父类中属性名为__名字的,子类不继承,子类不能访问
  • 如果在子类中向__名字赋值,那么会在子类中定义的一个与父类相同名字的属性
  • _名的变量、函数、类在使用from xxx import *时都不会被导入


### 如何在 Python 3 中使用 `venv` 创建虚拟环境 #### 使用 `venv` 模块创建虚拟环境 为了隔离项目依赖关系并管理包版本,在开发过程中建议为每个项目创建独立的虚拟环境。通过内置模块 `venv` 可轻松实现此目标。 命令行输入如下指令来建立新的虚拟工作区: ```bash python3 -m venv my_project_env ``` 上述操作会在当前目录下新建名为 `my_project_env` 的文件夹,其中包含了该特定项目的私有Python解释器副本及其标准库[^1]。 #### 安装软件包到虚拟环境中 一旦激活了新构建好的虚拟环境之后就可以利用pip工具下载所需的第三方扩展库而不会影响全局配置: ```bash source my_project_env/bin/activate # Linux 或 macOS 下激活方式 (my_project_env) $ pip install requests beautifulsoup4 numpy pandas... ``` 对于Windows操作系统,则应采用以下形式启动虚拟环境: ```batch my_project_env\Scripts\activate.bat ``` 当完成编程任务后可以通过执行deactivate命令退出会话返回默认状态[^2]. #### 解决常见错误提示 如果尝试创建基于Python 3.x系列版本号所对应的虚拟运行时失败,并收到似于"No module named '_ctypes'"的信息反馈,这通常是因为缺少必要的编译组件或是系统层面的支持包未被正确安装所致. 针对CentOS/RHELLinux发行版而言,解决办法之一就是预先确保已安装好完整的开发工具链以及对应于目的语言版本的相关头文件集,比如这样处理: ```bash sudo yum groupinstall "Development Tools" sudo yum install python3-devel ``` 另外值得注意的是,某些情况下还需要额外加载其他依赖项才能顺利初始化期望中的沙盒化执行上下文环境[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值