python基础篇(五)


  • class Foods() 根据约定,在Python中,首字母大写的名称指的是类。
    下面是个简单的示例:
    方法:类中的函数称为方法
    Foods():()为空的时候,表示从空白创建类
    __ init __ 具有初始化的功能,注意是 两边两个下划线_
    self,必须位于最前面,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法,每个与类相关联的方法调用都自动传递实参self。
class Foods():
    def __init__(self,name,flavor):
        self.name=name #相当于给变量赋一个默认值
        self.flavor=flavor
        self.material='鸡肉'
        self.seasoning='辣椒'
    def chicken(self):
        print(self.name+"这个菜的主食材是"+self.material)
    def pepper(self):
        print("这个菜味道是"+self.flavor+",所以要加些"+self.Seasoning)     
my_food = Foods('爆炒鸡丁','重辣')
my_food.Seasoning='朝天椒'#改变一个属性的值,那么调用方法时他会去利用新值
my_food.chicken()
my_food.pepper()
输出
爆炒鸡丁这个菜的主食材是鸡肉
这个菜味道是重辣,所以要加些朝天椒

还可以调用方法来修改属性,如下

class Foods():
    def __init__(self,name,flavor):
        self.name=name
        self.flavor=flavor
        self.material='鸡肉'
        self.seasoning='辣椒'
    def chicken(self):
        print(self.name+"这个菜的主食材是"+self.material)
    def pepper(self):
        print("这个菜味道是"+self.flavor+",所以要加些"+self.seasoning)
    def update_pepper(self,u_seasoning):#定义一个修改的方法
        self.seasoning=u_seasoning  
my_food = Foods('爆炒鸡丁','重辣')
my_food.update_pepper('干辣椒和小辣椒')#调用修改的方法
my_food.chicken()
my_food.pepper()
输出
爆炒鸡丁这个菜的主食材是鸡肉
这个菜味道是重辣,所以要加些干辣椒和小辣椒

还有这样一种方法给属性进行递增或者增加

class Foods():
    def __init__(self,name,flavor):
        self.name=name
        self.flavor=flavor
        self.material='鸡肉'
        self.seasoning='辣椒'
    def chicken(self):
        print(self.name+"这个菜的主食材是"+self.material)
    def pepper(self):
        print("这个菜味道是"+self.flavor+",所以要加些"+self.seasoning)
    def update_pepper(self,u_seasoning):
        self.seasoning= u_seasoning 
    def insert_seasoning(self,i_seasoning):#定义一个方法给seasoning增加新的属性
        self.seasoning+=i_seasoning
my_food = Foods('爆炒鸡丁','重辣')
my_food.update_pepper('干辣椒')
my_food.pepper()
my_food.insert_seasoning('、生姜')
my_food.pepper()
输出
这个菜味道是重辣,所以要加些干辣椒
这个菜味道是重辣,所以要加些干辣椒、生姜
  • 类的继承
    被继承的称 父类,新的类称 子类,子类完全继承父类的方法与属性
class Foods():
    def __init__(self,name,flavor):
        self.name=name
        self.flavor=flavor
        self.seasoning='辣椒'
    def material_1(self):
        print(self.name+"这个菜的主食材是"+self.material)
    def pepper(self):
        print("这个菜味道是"+self.flavor+",所以要加些"+self.seasoning)
    def update_pepper(self,u_seasoning):
        self.seasoning=u_seasoning  
    def insert_seasoning(self,i_seasoning):
        self.seasoning+=i_seasoning
class Pizza(Foods):  #
    def __init__(self,name,flavor):#初始化父类中的值
        self.material='面粉'#原来的值会带过来,也可以重新定义,但是在这里定义的不再属于父类
                           #同时如果这里定义的和同名的方法,那么调用时只会关注子类的方法
        super().__init__(name,flavor)
my_p= Pizza('牛肉披萨','微辣')
my_p.material_1()
输出
牛肉披萨这个菜的主食材是面粉
  • 导入类
    导入单个类 from module_name import class_name
    导入多个类 from module_name import class_name1,class_name2
    导入整个模块 import module_name
    导入模块中所有类 from module_name import *

  • 文件路径
    默认读取模块所保存的文件路径,也可以自定义

bbb='D:\\app\ABS.txt'#把文件路径保存在变量中
with open(bbb) as abc:
    acc=abc.read()
    print(acc)

下面例子可以进行逐行读取,方便在文件中查找指定值

bbb='D:\\app\ABS.txt'
with open(bbb) as abc:
    for a in abc:
        print(a)

利用文本的读取的数据:

bbb='D:\\app\ABS.txt'
with open(bbb) as abc:
    a_1=abc.readlines()
as_a=''
for a in a_1:
    as_a+=a.rstrip()
print(as_a)
print(len(as_a))#如果不是用变量as_a,而是直接len(a.rstrip()),那么统计将是每一行的字符串数量
  • 文件读取
    可指定读取模式 ('r' )、写入模式 ('w' )、附加模式 ('a' )或让你能够读取和写入文件的模式('r+' )。如果你省略了模式实参,Python将以默认的只读模式打开文件。写入模式 ('w' )会覆盖前面的内容而附加模式 ('a' )不会覆盖之前的数据
    例如
bbb='D:\\app\ABS.txt'
with open(bbb,'w') as abc:
    abc.write("写入数据\n")#\n可在插入时换行
    abc.write("再次写入数据\n")
  • 存储和读取数据
    以下代码演示了如果存储值,以及读取,并且利用了 try + except 对异常信息进行处理
    (当程序出现异常,但是我们不想返回任何值时直接在except异常后面加pass)
import json #调用json模块
def get_name():
    f_name='username.json'
    try:
        with open(f_name)as q_name:
            username_s=json.load(q_name)#打开我们的存储的文件
    except FileNotFoundError:
        return None#若果不存在该文件
    else:
        return username_s#存在该文件,我们就返回里面存储的值
def st_name():
    username=get_name()#调用函数若果之前保存过,那么我们就能得到存储的值
    if username:
        print(username+",欢迎回来!")
    else:
        username=input("请输入用户名  ")#若果没有获取到值,那么运行下面代码,让用户存储一个值,并保存
        f_name='username.json'
        with open(f_name,'w')as q_name:
            json.dump(username,q_name)
            print("注册成功,欢迎您"+username+"!")
st_name()#第一次运行时,没有保存值那么就会提示输入,第二次运行时,已经保存那么直接读取数据

你可能感兴趣的:(python基础篇(五))