Python 学习开启AI之旅 (十三)

#面相对象编程方式
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)

 

发布了119 篇原创文章 · 获赞 32 · 访问量 59万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览