学Python,用RPA
艺赛旗RPA2020.1版本 正在免费下载使用中,欢迎下载使用
www.i-search.com.cn/index.html?from=line1
#!/usr/bin/env Python3
-- coding: utf-8 --
@Software: PyCharm
@virtualenv:workon
@contact: 1040691703@qq.com
@Desc:
author = ‘未昔/AngelFate’
date = ‘2020/5/ 19:58’
import copy
a = [1,2,3,4,5]
b = a #浅拷贝,a,b同时指向一个id,当其中一个修改时,另外一个也会被修改。
c = copy.deepcopy(a) #深拷贝,c单独开辟一个id,用来存储和a一样的内容。
d =a[:] #这样也是深拷贝。
e = copy.copy(a) #当拷贝内容是可变类型时,那么就会进行深拷贝,如果是不可变类型时,那么就会进行浅拷贝。
注意:深拷贝指的是复制内容,单独开辟一个内存,浅拷贝指的是两个变量同时指向一个内存 ID。
私有化和 Property
class Test(object):
def init(self):
self.__num = 100
@getNum.setter #等同步于 porperty(setNum,getNum)
def setNum(self,num): #将self.__num的属性封装。
self.__num = num
@porperty #等于getNum = porperty(getNum) 默认的是getter方法。
def getNum(self) #获取__num的值。
return self.__num
num = porperty(getNum,setNum) #使用关键字porperty将getNum和setNum方法打包使用,并将引用赋予属性num。
t = Test()
print(t.__num) #将会出错,表示输出私有属性,外部无法使用。
t.__num = 200 #这里将会理解为添加属性 __num = 200,而不是重新赋值私有属性。
print(t.__num) #这里输出的200是定义的属性__num,而不是self.__num。
t.setNum(200) #通过set方法将私有属性重新赋值。
t.getNum() #通过get方法获取__num的值。
print(_Test__num) #私有属性其实是系统再私有属性前加上了一个_Test,就是一个下划线加类名。
t.num = 300 #调用类属性num,并重新赋值,porperty会自动检测set方法和get方法,并将引用赋值给set方法。
print(t.num) #输出类属性,并会自己检测使用get方法进行输出。
class Test(object):
def init(self):
self.__num = 100
@getNum.setter #等同步于 porperty(setNum,getNum)
def setNum(self,num): #将self.__num的属性封装。
self.__num = num
@porperty #等于getNum = porperty(getNum) 默认的是getter方法。
def getNum(self) #获取__num的值。
return self.__num
num = porperty(getNum,setNum) #使用关键字porperty将getNum和setNum方法打包使用,并将引用赋予属性num。
t = Test()
print(t.__num) #将会出错,表示输出私有属性,外部无法使用。
t.__num = 200 #这里将会理解为添加属性 __num = 200,而不是重新赋值私有属性。
print(t.__num) #这里输出的200是定义的属性__num,而不是self.__num。
t.setNum(200) #通过set方法将私有属性重新赋值。
t.getNum() #通过get方法获取__num的值。
print(_Test__num) #私有属性其实是系统再私有属性前加上了一个_Test,就是一个下划线加类名。
t.num = 300 #调用类属性num,并重新赋值,porperty会自动检测set方法和get方法,并将引用赋值给set方法。
print(t.num) #输出类属性,并会自己检测使用get方法进行输出。
PS: num 前后没有下划线的是公有方法,_num 前边有一个下划线的为私有方法或属性,子类无法继承, 前边有两个下划线的 一般是为了避免于子类属性或者方法名冲突,无法在外部直接访问。前后都有双下划线的为系统方法或属性。后边单个下划线的可以避免与系统关键词冲突。