#面相对象编程方式
class Animal:
names=''
typename=''
def run(self):
print(self.method+ '的'+ self.names + ' is run~')
def sleep(self):
print(self.method+ '的'+ self.names + ' is sleep')
def setName(self,sName):
self.names=sName
def setMethod(self,sMethod):
self.method=sMethod #局部方法定义属性,其他方法也可以直接调用。
if __name__=='__main__':
animal=Animal()
animal.setMethod('疯狂')
animal.setName('兔子')
animal.run()
animal.sleep()
animal2 = Animal()
animal2.setMethod('乖乖')
animal2.setName('小狗')
animal2.run()
animal2.sleep()
# 餐馆:创建一个名为Restaurant的类,其方法__init__()设置两个属性:
# restaurant_name 和 cuisine_type(烹饪)。创建一个名为 describe_restaurant()方法和一个名为open_restaurant ()方法,
# 其中前者打印前述两项信息,而后者打印一条消息,指出餐馆正在营业。
# 根据这个类创建一个名为restaurant的实例,分别打印其两个属性,再调用前述两个方法。
class Restaurant:
# def __init__(self):
# self.restaurant_name='渔船'
# self.cuisine_type='蒸饪饺子'
# print('初始化:餐馆名称:%s,餐馆类型:%s'%(self.restaurant_name,self.cuisine_type))
def __init__(self,sRestaurant_Name='',sCuisine_Type=''): #后面的方法会覆盖前面的方法。
self.restaurant_name=sRestaurant_Name
self.cuisine_type=sCuisine_Type
def describe_restaurant(self):
print('餐馆名称:%s'%(self.restaurant_name))
print('餐馆类型:%s'%(self.cuisine_type))
def open_restaurant(self):
print('餐馆正在营业')
def setDescribeStatus(self,sName,sCuiSiType):
self.restaurant_name=sName
self.cuisine_type=sCuiSiType
restaurant= Restaurant()
restaurant.setDescribeStatus('KFC','快餐')
print('Restaurant类属性: 名称(restaurant_name):%s ,类型(cuisine_type): %s'%(restaurant.restaurant_name,restaurant.cuisine_type))
restaurant.describe_restaurant()
restaurant.open_restaurant()
restaurant1= Restaurant('小庄饭店','快餐')
#restaurant1.setDescribeStatus('KFC','快餐')
print('Restaurant类属性: 名称(restaurant_name):%s ,类型(cuisine_type): %s'%(restaurant.restaurant_name,restaurant.cuisine_type))
restaurant1.describe_restaurant()
restaurant1.open_restaurant()
#类的继承(封装、继承、多态)
#单继承。
class AA():
B=3
def __init__(self,name):
print(name)
self.name=name
def AA1(self):
print('AA->AA1')
def AA2(self):
print('AA->AA2 name:%s'%self.name)
class a1(AA): #a1拥有了AA所有属性。
def __init__(self,name,age):
print('%s—%s'%(name,age))
#super().__init__(name) 默认一个类,建议用这种方法
AA.__init__(self,name) #指名道姓,这种可以写在多个类
def AA1(self): #a1的方法有则优先执行a1的AA1,没有则看父类是否存在该方法
print('a1->AA1') #类似方法重写。
class b1(AA):
pass
asub=a1('aaaadfdafdaf',333)
asub.AA1()
asub.AA2()
bsub=b1('xxx')
bsub.AA1()
# class Restaurant:
# """
# 测试测试测试,类文档
# """
# number_served=0 #就餐人数:
# # def __init__(self):
# # self.restaurant_name='渔船'
# # self.cuisine_type='蒸饪饺子'
# # print('初始化:餐馆名称:%s,餐馆类型:%s'%(self.restaurant_name,self.cuisine_type))
# #构造函数,初始化
# def __init__(self, sRestaurant_Name='', sCuisine_Type=''): # 后面的方法会覆盖前面的方法。
# self.restaurant_name = sRestaurant_Name
# self.cuisine_type = sCuisine_Type
#
# #描述,内容
# def describe_restaurant(self):
# print('餐馆:%s' % (self.restaurant_name))
# print('主要做:%s' % (self.cuisine_type))
#
# #开业状态
# def open_restaurant(self):
# print('现在正在营业')
#
# #停业状态
# def stop_restaurant(self):
# print('Sorry,已经歇业')
#
# #设置餐馆描述及类型
# def setDescribeType(self, sName, sCuiSiType):
# self.restaurant_name = sName
# self.cuisine_type = sCuiSiType
#
# #设置餐馆最大人数
# def set_number_max(self,iMaxPerson):
# self.MaxPerson=iMaxPerson
# print('最大容纳客户数:%s'%(self.MaxPerson))
#
# def come_people(self,iNewComNum):
# if Restaurant.number_served+iNewComNum>self.MaxPerson:
# print('当前店内座位不足,已经超出最大可容纳客户数:%s,当前客户数:%s,新来的人数:%s,预计总人数:%s'%(self.MaxPerson,Restaurant.number_served,iNewComNum,Restaurant.number_served+iNewComNum))
# else:
# Restaurant.number_served+=iNewComNum
# print('最大可容纳客户数:%s,当前客户数:%s,新来的人数:%s,预计总人数:%s'%(self.MaxPerson,Restaurant.number_served,iNewComNum,Restaurant.number_served+iNewComNum))
#
# #冰激凌小店:冰激凌小店是一种特殊餐饮店。
# class IceCreamStatnd(Restaurant):
# def __init__(self,sName,sType,sFlavors):
# #给父类传递参数。
# Restaurant.__init__(self,sName,sType)
# self.Flavors=sFlavors
# def show_type(self):
# print('%s有%s口味的冰淇淋'%(self.restaurant_name,self.Flavors))
#
# #对象实例化。
# iceCreamStatnd=IceCreamStatnd('海滨冰激凌店','冰淇淋',['香草','巧克力','抹茶'])
# iceCreamStatnd.open_restaurant()
# iceCreamStatnd.describe_restaurant()
# iceCreamStatnd.show_type()
# iceCreamStatnd.set_number_max(10)
# iceCreamStatnd.come_people(3)
# iceCreamStatnd.come_people(4)
# iceCreamStatnd.come_people(5)
#多继承,继承先后顺序很重要。
# class A:
# def __init__(self,name):
# self.name=name
# def infoName(self):
# print(self.name)
#
# class B:
# def __init__(self,age):
# self.age=age
# def infoAge(self):
# print(self.age)
#
# class C(A,B):
# def __init__(self,name,age):
# super().__init__(name)
# B.__init__(self,age)
# c=C('xxxx',10)
# c.infoName()
# c.infoAge()
'''
属性: 类属性,实例化属性,私有属性
方法:构造方法 实例化方法 类方法 静态方法 私有方法
'''
class A():
__a=1 #私有属性
def a1(self):
print(self.__a)
@classmethod #内置装饰器,类方法
def a2(cls):#cls 指向类名
print(2222)
@staticmethod #静态方法
def a3():#静态方法,能被实例化对象 以及类名调用
print(333)
def __a4(self):
print(444) #私有方法
a=A()
a.a1()
#类名._类名__属性名 是可以访问的
print(A._A__a) #不建议这样做,私有属性就在内部调用
# r --以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
# w --打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
# a --打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
# rb --以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式
# wb --以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
# ab --以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
# r+ --打开一个文件用于读写。文件指针将会放在文件的开头。(先读再写)
# w+ --打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
# a+ --打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
#rb+ --以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
#wb+ --以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
#ab+ --以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
# #r模式 只能读取,不能写入,无法创建新文件,开始游标位置在开头
# with open('./files_txt/a.txt','r',encoding='utf-8') as file_a:
# print(file_a.read())
# print(file_a.read())
# #读取文本的长度,以字符长度计算,默认从游标位置读到最后
# print(file_a.read(5)) #读取文本的长度,以字符长度计算,默认从游标位置堵到最后
# print(file_a.tell()) #返回当前游标位置,一个中文等于3个字节
# #file_a.seek(0) #设置游标位置
# print(file_a.read())
#
# #w 模式 只能写入,不能读取,可以创建新文件,开始游标位置在开头,打开文件的同时会清空原有内容
# with open('./files_txt/a.txt','w',encoding='utf-8') as file_a:
# file_a.write('你好 aaaaaaaaaa')
# print(file_a.tell())
#
# #a 模式 只能写入,不能读取,写入只能实现末尾追加
# with open('./files_txt/a.txt','a',encoding='utf-8') as file_a:
# file_a.write('你好 aaaaaaaaaa')
# file_a.seek(0)
# file_a.write('bbbbbbbbbbbbbbbbbbbbbbbbbb')
# print(file_a.tell())
#
# #r+ 模式 只能写入,不能读取,写入只能实现末尾追加
# with open('./files_txt/a.txt','r+',encoding='utf-8') as file_a:
# print(file_a .txt)
# file_a.write('你好 aaaaaaaaaa')
# file_a.seek(0)
# file_a.write('bbbbbbbbbbbbbbbbbbbbbbbbbb')
# print(file_a.tell())
#
# #w 模式 只能写入不能读取,可以创建新文件,打开文件的同时会清空原有内容
# with open('./files_txt/b.txt','w',encoding='utf8') as file_a:
# file_a.write('你好 aaa')
# print(file_a.tell())
#
# #w+ 模式 能写入能读取,可以创建新文件,打开文件的同时会清空原有内容
# with open('./files_txt/b.txt','w+',encoding='utf8') as file_a:
# print(file_a.read())
# file_a.write('你好 aaa')
# file_a.seek(0) #要注意游标位置
# print(file_a.read())
# print(file_a.tell())
#
# #a 模式 只能写入不能读取,可以创建新文件,写入只能实现末尾追加
# with open('./files_txt/c.txt','a',encoding='utf8') as file_a:
# print(file_a.tell())
# file_a.write('aaa')
# file_a.seek(0)
# file_a.write('bbb')
#
# #a+ 模式 能写入能读取,可以创建新文件,开始游标位置在末尾,写入只能实现末尾追加
# with open('./files_txt/c.txt','a+',encoding='utf8') as file_a:
# file_a.seek(0)
# print(file_a.read())
# with open('./file_txt/a.txt','r+',encoding='utf8') as c:
# #photo=c.read()
# #print(photo)
# print(c.readline())
# print(c.tell())
# c.writelines(['\n11111','\n222222','\n3333333'])
# hello world
#在中间插入一个python ,变成: hello python world
# with open('./file_txt/c.txt','r',encoding='utf8') as c:
# old_txt= c.read()
# new_txt=old_txt.replace(' ',' python ')
# print(new_txt)
# with open('./file_txt/c.txt','w',encoding='utf8') as c2:
# c2.write(new_txt)
# try:
# a=int(input('aaaa'))
# except ValueError:
# print('aaaaaa')
# except :
# print('cccccc')
# else:
# print('ok')
# finally:
# print('go on~')
# try:
# num1=int(input('请输入数字1'))
# num2=int(input('请输入数字2'))
# except TypeError:
# print('类型转换异常')
# except ValueError:
# print('值转换异常')
# except BaseException:
# print('未知异常')
# else:
# print('操作正常')
# finally:
# print('继续操作')
def CaculateNum():
while True:
try:
num1=int(input('请输入数字1'))
except:
print('请重新输入正确的数字1')
else:
while True:
try:
num2=int(input('请输入数字2'))
except:
print('请输入正确的数字2')
else:
print('%s+%s=%s'%(num1,num2,num1+num2))
return
#CaculateNum()
while True:
try:
read_file=input('请输入要编辑的文件名')
if read_file=='#':
break
with open('./file_txt/'+read_file+'.txt','r+',encoding='utf8') as f:
strData=''
lstData=f.readlines()
print(lstData)
for i in range(lstData):
strData+= lstData[i] +'\n'
print(strData)
except Exception as ex:
print('发生异常原因:%s'%ex)