python17

day16回顾
文件 File
   二进制文件
      'b'
      文本,声音,图像等都可以存储
      (直接字节数据)
   文本文件
      't'
      文本
      (自动把字节数据进行解码和编码成为字符串,换行符会自动转换为'\n')

  文件操作分三步:
     1. 打开
        open
     2. 读/写
       F.read([n字节或字符])/F.readline()/F.readlines()
       F.write(字节串或字符串)/F.writelines(字节或字符序列)
     3. 关闭
        F.close()

  方法:
     F.seek(偏移量,相对位置)
     F.tell()  返回当前文件流的读写位置
     F.flush()  清空缓冲区
  


汉字编码有几种:
   GB18030/GBK/GB2312
   UNICODE32 / UNICODE16(16bit)   <---->  UTF-8
       python内部的字符串str用UNICODE

编码注释:
   # -*- coding: xxxx -*-



day17笔记
   面向对象编程   Object-Oriented Programming

什么是对象:
   对象是指现实中的物体或实体

什么是面向对象:
   把一切看成对象(实例), 用各种对象之间的关系来描述事务

对象的特征
   1. 对象有很多属性(名词或形容词)
     年龄,姓名,性别 ...
   2. 对象有很多行为(动作,动词)
     学习,吃饭,睡觉,踢球,工作...
  
什么是类:
   拥有相同属性和行为的对象分为一组,即为一个类
   类是用来描述对象的工具,用类可以创建此类的对象(实例)

类和对象示意
   车(类)  ----->> BYD  E6(京A.88888) 实例,对象
         \
          \---->> BWM X5(京B.00000)   实例,对象

  狗(类) -----> 哈士奇(户籍号: 00001)
        \
         \-----> 导盲犬(户籍号:00002)  对象

  int(类)  -----> 100 (对象)
         \
          \ -----> 200 (对象)

类的创建语句 class 语句
   语法:
     class 类名(继承列表):
         '''类文档字符串'''
         实例方法定义
         类变量定义
         类方法定义(@classmethod)
         静态方法定义(@staticmethod)
   作用:
     创建一个类
     类用于描述对象的行为和属性
     类用于创建此类的一个或多个对象(实例)
   说明:
     类名必须为标识符(与变量名命名规则相同,建议首字母大写)
     类名实质上就是变量,它绑定一个类
   示例见:
     class.py


构造函数
   构造函数调用表达式:
     类名([创建传参列表])

  作用:
     创建这个类的实例对象,并返回此实例对象的引用关系
   说明:
     实例有自己的作用域和名字空间,可以为该实例添加实例变量(也叫属性)
     实例诃以调用类方法和实例方法
     实例可以访问类变量和实例变量
   示例见:
     class.py

实例方法(method)
   语法:
     class 类名(继承列表):
         def 实例方法名(self, 形参名1, 形参名2, ....):
             '方法文档字符串'
             语句块
   作用:
     用于描述一个对象的行为,让此类型的全部对象都拥有相同的行为
   说明:
     实例方法的实质是函数,是定义在类内的函数
     实例方法至少有一个形参,第一个形参用来绑定调用这个方法的实例,一般命名为'self'

实例方法的调用语法:
   实例.实例方法名(调用传参)
   # 或
   类名.实例方法名(实例, 调用传参)

  示例见:
     instance_method.py



实例属性 atrribute(也叫实例变量)
   每个实例可以有自己的变量用来保存对象自己的数据, 称为实例变量(也叫属性)

  语法:
     实例.属性名

  赋值规则同变量的赋值规则
     首次为属性赋值则创建此属性
     再次为属性赋值则改变属性的绑定关系
   作用:
     记录每个对象自身的数据
   示例见:
     attribute.py
  
练习:
   定义一个"人"(Human)类
     class Human:
         def set_info(self, name, age, address='不详'):
             '此方法用来给人对象添加姓名,年龄,家庭住址属性'
             ... # 此处自己实现
         def show_info(self):
             '此处显示此人的信息'
             ...
   调用如下:
     h1 = Human()
     h1.set_info('小张', 20, '北京市东城区')
     h2 = Human()
     h2.set_info('小李', 18)
     h1.show_info()
     h2.show_info()


del语句
  可以删除对象(实例)的属性
  
   语法:
     del 对象.实例变量名

  示例:
     class Dog:
         pass
     dog1 = Dog()
     dog1.color = '白色'
     print(dog1.color)  # 白色 
     del dog1.color  # 删除属性
     print(dog1.color)  # AttributeError属性错误

del 语句小结:
    1) 删除变量       del name
    2) 删除列表的元素  del L[1], del L[::2]
    3) 删除字典的键    del d['name']
    4) 删除对象的属性   del dog1.color


初始化方法
  作用:
     对新创建的对象添加属性
   语法格式:
     class 类名(继承列表):
         def __init__(self, [形参列表]):
             语句块
     注: [] 代表其中的内容可省略
  说明:
     1. 初始化方法名必须为 '__init__' 不可改变
     2. 初始化方法会在构造函数创建实例后自动调用,且将实例自身通过第一个参数self 传入 __init__ 方法
     3. 构造函数的实参将通过 __init__方法的参数列表传入到__init__方法中
     4. 实始化方法内如果需要return 语句返回,则只能返回None

  示例见:
     init_method.py

练习:
   1. 写一个Student类,此类创建的对象有三个属性:
       姓名,年龄,成绩
     1) 用初始化方法为该类添加上述三个属性
     2) 添加set_score() 方法能为对象修改学生成绩
     3) 添加show_info() 方法,打印学生信息
     如:
       class Student:
           def __init__(.....):
               ....
           def set_score(self, score):
                ....
           def show_info(self):
               ....
       L = []
       L.append(Student('小张', 20, 100))
       L.append(Student('小李', 18, 95))
       L.append(Student('小魏', 8))
       L[2].set_score(70)
       for obj in L:
           obj.show_info()  # 小张 20 岁, 成绩: 100  ....


析构方法:
   class 类名(继承列表):
       def __del__(self):
           语句块

  析构方法在对象被销毁时被自动调用
   python语言建议不要在对象销毁时做任何事情,因为销毁时间难以确定

  示例见:
     del_method.py


预置实例属性
   __dict__属性
    __dict__属性绑定一个存储此实例自身变量字典

  示例:
     class Dog:
         pass
     dog1 = Dog()
     print(dog1.__dict__)  # {}
     dog1.color = "白色"
     print(dog1.__dict__)  # {'color': '白色'}
     dog1.kinds = '京巴'
     print(dog1.__dict__)  # {'color': '白色', 'kinds':'京巴'}

  __class__属性
     '__class__' 属性绑定创建此实例的类
     作用:
       可以借助此属性来访问创建此实例的类
     示例:
       class Dog:
           pass
       dog1 = Dog()
       print(dog1.__class__)
       dog2 = dog1.__class__()
       print(dog2.__class__)

用于类的函数:
   isinstance(obj, class_or_tuple)  返回这个对象obj是否是某个类的对象或者某些类中的一个类的对象,如果是则返回True, 否则返回 False
   type(obj)  返回对象的类型


面向对象的综合示例:
   有两个人:
    属性:
       1. 姓名: 张三, 年龄 35 岁
       2. 姓名: 李四, 年龄 8 岁
     行为:
       1. 教别人学东西 teach
       2. 工作赚钱 work
       3. 借钱 borrow
   事情:
     张三 教 李四 学 python
     李四 教 张三 学 王者荣耀
     张三 上班赚了 1000 元钱
     李四 向 张三 借了 200 元钱
     35 岁的 张三 有钱 800元,它学会的技能: 王者荣耀
     8 岁的 李四 有钱 200元, 它学会的技能: python


练习:
   1. 看懂面向对象的综合示例:

  2. 将学生信息管理程序,原来由字典保存每个学生的信息,现改为用
     对象来保存学生的信息
       要求: 用Student类来描述,将Student类写在独立的模块:
          student.py中

猜你喜欢

转载自www.cnblogs.com/py321/p/9779504.html