首页 > 编程语言 >Python高级-深拷贝、浅拷贝-笔记

Python高级-深拷贝、浅拷贝-笔记

时间:2022-12-01 10:32:20浏览次数:32  
标签:__ name Python self 笔记 taste print 拷贝 def

私有化

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

通过name mangling(名字重整(目的就是以防子类意外重写基类的方法或者属性)如:_Class__object)机制就可以访问private了。

#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()

Python高级-深拷贝、浅拷贝-笔记_子类

总结

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

标签:__,name,Python,self,笔记,taste,print,拷贝,def
From: https://blog.51cto.com/chen8866/5901294

相关文章

  • Python高级-import导入模块-笔记
    1.import搜索路径路径搜索从上面列出的目录里依次查找要导入的模块文件''表示当前路径列表中的路径的先后顺序代表了python解释器在搜索模块时的先后顺序程序执行时添加......
  • 重构:改善既有代码的设计 第八章 读书笔记
    第8章搬移特性8.1搬移函数(MoveFunction)在对象之间搬移函数;8.2搬移字段(MoveField)在对象之间搬移字段;8.3搬移语句到函数(MoveStatementsintoFu......
  • cs231n学习笔记——Lecture2 Image Classification
    该博客主要用于个人学习记录,部分内容参考自李飞飞笔记、cs231n计算机视觉课程笔记、图像识别算法(一)、cs231n笔记2—线性分类一、图像识别ImageClassification1、在......
  • python知识点
    一、pip工具常用的子命令1、install,用于安装库;2、download,用于下载库;3、uninstall,用于卸载库;4、freeze,用以requirements格式导出安装包;5、show,查看某个包的信息6、li......
  • python中getopt()函数用法
    通过getopt模块中的getopt()方法,我们可以获取和解析命令行传入的参数一、函数用法getopt(args,shortopts,longopts=[])args:固定写法sys.argv[1:]shortopts:短参......
  • 关于python的copy模块内的浅拷贝和深拷贝
    Python中赋值语句不复制对象,而是在目标和对象之间创建绑定(bindings)关系,即复制的是对象的引用。对于自身可变(如列表)或者包含可变项的集合对象(如嵌套列表),有必要生成......
  • 原码反码和补码的区别及用法笔记
    之前学习原码、反码、补码的时候就学的很懵,知道反码和补码怎么算的,但是不知道有什么用。今天看了几个视频,虽然有举例,但是自己换了个数就算不出来了。后来终于弄明白了。......
  • HCIA学习笔记四十六:NAT服务器
    一、NAT服务器• 通过配置NAT服务器,可以使外网用户访问内网服务器。二、NAT服务器配置三、配置验证四、NAT服务器实验4.1、拓扑图•分别在路由器中拖出2台AR222......
  • 微信小程序开发笔记 - 路由导航
    路由导航目录路由导航1.声明式路由导航1.1声明式后退导航1.2声明式导航传参2.编程式路由导航2.1编程式后退导航2.3编程式导航传参1.声明式路由导航navigator标签......
  • 后缀数组(SA)学习笔记
    这玩意真的是给喵人学的吗,谁告诉本喵这个简单让我先学这个的(哭sa[sum[rk[tp[i]]]--]=tp[i];有没有人浇浇这句话什么意思啊(悲tp[i]表示第二关键字排名为i的串的位置r......