python 面向对象编程
看了一下python也可以用面向对象 就试着将java写法 就在python上试了一下 顺便熟悉一下语法 还不错。。。 希望大神指点更简结 灵巧 写法 请留求评论
import pickle
import random
#author Q237356573
#.........Base
class Base_number():
def __init__(self,all,Prime,single):
self._all=all
self._Prime=Prime
self._single=single
def Show_all(self):
return self._all
def Show_Prime(self):
return self._Prime
def Show_single(self):
return self._single
#操作对象
class Writ_base_number():
#all 全部
def set_all(self,all):
self._all=all
def get_all(self):
return self._all
#素数[]
def set_Prime(self,Prime):
self._Prime=Prime
def get_Prime(self):
return self._Prime
#质数[]
def set_single(self,single):
self._single=single
def get_single(self):
return self._single
#Writ_File_catalog文件目录
def set_catalog(self,catalog,wb):
self._catalog=open(catalog,wb)
def get_catalog(self):
return self._catalog
def show_catalog(self): #测试
print("存入目录:"+self._catalog.name)
#测试 Writ obj 参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。
# protocol的值还可以是1或2,表示以二进制的形式序列化
def Writ_obj_file(self,writobj,catalog):
pickle.dump(writobj,catalog,0)
#测试 Read obj
def Read_obj_file(self):
return pickle.load(self._catalog)
#计算函数
def for_Three_add(self):
obj_name=[]
f=Writ_base_number()#实例对象
mark=['A:','B:','C:']
for b in mark:
num=random.sample([i for i in range(1,100)],25) #不重复随机数
f.set_all(b+str(num))#存入全部
A=[]
B=[]
for a in num:
if a%2 != 0:
A.append(a) #质数
else:
B.append(a) #素数
#writ 封装对象
f.set_Prime(B)
f.set_single(A)
obj_name.append(Base_number(f.get_all(),f.get_Prime(),f.get_single()))
return obj_name
'''
#mail writ方法
Operation=Writ_base_number()
Operation.set_catalog('c:\\file2.pkl','wb')
base_obj=Operation.for_Three_add()
Operation.Writ_obj_file(base_obj,Operation.get_catalog())
Operation.get_catalog().close()
'''
#mailread 读出
R=Writ_base_number()
R.set_catalog("c:\\file2.pkl",'rb')
obj_list=R.Read_obj_file()
R.get_catalog().close()
#迭代
for a in obj_list:
print("全部数_"+str(a.Show_all()))
print("素数"+str(a.Show_single()))
print("质数"+str(a.Show_Prime()))
print()