0%

29、类与对象基础.md

五、类

1、什么是类

在 python 中所有类型的数据都可以看成对象, 包括我们我们以前学习的所有的内置类型int, float等.

像这些 int, float, list这些数据类型, 就是我们面向对象中的类

我们可以根据需要自定义很多类型出来, 这些自定义的类型也是我们面向对象中的类

2、分类

python3中统一都是新式类, pyhon2中才分新式类与经典类

  1. 经典类
  2. 新式类

3、自定义类的组成

4、语法

  1. 经典类格式

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    class 类名:
    #静态字段
    属性=值
    #私有静态字段(外部无法访问)
    _属性=值
    #私有静态字段且子类无法覆盖
    __属性=值
    def __init__(self,参数1,参数2,...):
    """"初始化方法(构造方法)"""
    #普通字段
    self.字段 = 参数1
    self.字段 = 参数2

    def 方法名(self,参数1,参数2,...):
    '''无返回值的方法'''

    def 方法名(self,参数1,参数2,...):
    '''有返回值的方法'''
    retrun 返回值

    @property
    def 属性名(self):
    return obj
  2. 新式类格式

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    class 类名(object):
    #静态变量
    属性=值
    #私有变量
    _属性=值
    #用来避免子类覆盖其内容
    __属性=值
    def __init__(self,参数1,参数2,...):
    """"初始化方法(构造方法)"""
    self.变量名 = 参数1
    self.变量名 = 参数2

    def 方法名(self,参数1,参数2,...):
    pass

5、举个栗子

  1. 栗子1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Person():
    def __init__(self, name):
    self.name = name
    def say(self):
    print(self.name + ":在说话")

    def run(self):
    print(self.name + ':带着小姨子跑路了')

    if __name__ == '__main__':
    person = Person('小明')
    print(person.name)
    person.say()
    person.run()
  2. 说明

  3. 内存分析图

  4. 执行步骤

    1、将类加载进内存

    2、将类变量加载进类的内存

    3、将__init__方法的地址加载进类的内存

    4、将普通方法方法的地址加载进类的内存

    5、实例化对象分配对象内存地址

    6、将实例变量初始化加载进对象内存

  5. self:

    在实例化时自动将对象/实例本身传给__init__的第一个参数,你也可以给他起个别的名字,但是正常人都不会这么做。
    因为你瞎改别人就不认识

作业

  1. Employee

    • 需求:定义一个员工类Employee
    • 自己分析出几个成员,然后给出成员变量
      • 姓名name,工号id,工资salary
    • 以及一个显示所有成员信息的方法。并测试。
      • work
  2. 定义商品类

    • 需求:定义个商品类 ShopInfo

    • 自己分析出几个成员,然后给出成员变量

      • 商品shop_id, 商品名称 name,当前价格 price(商品价格价格大于0),
    • 在控制台显示所有的商品信息