类的专有方法
__#__():
init 生成对象时
del 释放对象时
repr 打印转换
setitem 按照索引赋值
getitem 按照索引获取值
len 取长度
cmp 比较
call 调用函数
add 加
sub 减
mul 乘
div 除
mod 取余
pow 乘方
这些运算符都是可以重载的
对象的幅值都是浅复制
深拷贝是
c1=class1()
c2=class1(c1.x,c1,y,...)
消耗内存空间较大
浅拷贝:不改变原来数据的地址
对象可以改变原来数据的地址变量的内容
类的封装
class money:
def __init__(self):
self.__money=100
def show(self):
print(self.__money)
num=money()
num.money=1000
print(num.money)
num.show()
1000
100
self数据加__变为私有变量,不可被修改
私有变量和私有方法用于 权限设计
私有方法也是在前面加__,只有在类的内部可以调用的方法
但是也可也访问,需要
num._money__money=1000
num._money__show()
访问内部方法和变量
多个文件之间调用类
例如定义一个文件类
class Testclassgo:
def __init__(self):
print("aaa")
AAA为目录,Testclass为程序文件 Testclassgo 为里面的类
方法1
from AAA.Testclass import Testclassgo
go=Testclassgo()
方法2
import AAA.Testclass
go=AAA.Testclass.testclassgo()
打印下标和索引
for i,v in enumerate("dsdss"):
print(i,v)
0 d
1 s
2 d
3 s
4 s
数据的合并
s1="sdsadas"
s2="1234567"
for i in zip(s1,s2):
print("".join(i))
s1
d2
s1="sdsadas"
s2="1234567"
for i,j in zip(s1,s2):
print(i,":",j)
s : 1
d : 2
元组有多少个值,就会有相应的打印
t=("123","321")
print("%s%s"%t)
巧妙运用,其中*mid 为取出所有值
score=(111,323,324,32)
scores=sorted(score)
min1,*mid,max=scores
print(min1,*mid,max)
集合
s1=set([])
set1={1,2,3,1,2,3}
print(set1)
{1, 2, 3}
集合里面不会有重复的,尽管你写进去
set1={1,2,3,1,2,3}
for i in set1:
print(i)
1
2
3
不会打印重复的
set1={1,2,3,1,2,3}
for i,v in enumerate(set1):
print(i,v)
0 1
1 2
2 3
集合添加元素
set1={1,2,3,1,2,3}
set2={8,9,10}
set3={8,9}
set1.add(4)
print(set1)
set1.update([4,5,6])
print(set1|set2,set1>set2,set3.issubset(set2),set2.issuperset(set3))
sub是被包含,super是包含
| - & ^ 并集 差集 交集 各自独有的为^
print(set1.isdisjoint(set2)) 不想交
利用集合去重
import random
s=set([])
for i in range(int(input("N:"))):
s.add(random.randint(1,1000))
print(sorted(s))
字典可以
{}.fromkeys({"1","2"},"3")
就是{'1': '3', '2': '3'}
students={ "1":{
"name":"tom",
"age":18
}, "2":{
"name":"ff",
"age":12 }}
for key in students:
print(key,students[key])
同下
for key,value in students.items():
print(key,value)
service={
"http":80,
"ftp":21,
"ssh":22
}
service["mysql"]=3306
print(service)
字典添加元素 存在key则更新value;否则全部增加
添加多个元素 可以用于字符统计
service.update(onedict)
service.update(http=8989,vsftp=80)
而service.setdefault("as",90)只会添加不存在的kye-value
注意格式
print(service.get("http")) 查看不存在则返回None
统计个数
import random
mystr=[]
for i in range(100):
mystr.append(random.randint(20,100))
mydict={}
for num in sorted(mystr):
if num in mydict:
mydict[num]+=1
else:
mydict[num]=1
print(mydict)
统计句子单词个数
mydict={}
for i in input("英文句子").split():
if i in mydict:
mydict[i]+=1
else :
mydict[i]=1
for key,value in mydict.items():
print(key,value)
随机生成银行号和密码
显示001用%03d
import random
mydict={}
for i in range(1,101):
mydict["6102009%03d"%i]="redhat"
for i,j in mydict.items():
print(i,j)