> 文档中心 > 面向对象程序设计一(Python中的概念、类、类属性、类方法)

面向对象程序设计一(Python中的概念、类、类属性、类方法)

注意:本章笔记代码模块中的__,部分场景由于显示问题,将双下划线连接在一起,实际上为双下划线(编译环境中显示样式:_ _)

  • 概念

    • 面向对象编程:定义类→实例化→执行动作
      • eg. 把水蜜桃装进冰箱(Hint:水蜜桃属于水果类)
      • 面向对象:定义类(水果)→实例化(水蜜桃)→执行动作(把水蜜桃放进冰箱)
      • 面向过程:打开冰箱(怎么打开)→装水蜜桃(怎么装)→关闭冰箱(怎么关闭)
      • 对比,处理新水果:西瓜
        • 面向对象:实例化新实例(西瓜)→执行动作
        • 面向过程:西瓜比水蜜桃大,思考怎么装进冰箱;西瓜太重,怎么顺手开冰箱
    • 定义

    • 实例化

      • () 不可少
# 定义方法:class Classname:    # 定义规范,类名首字母大写    pass# ---------------------------------------------------------------------------------# 实例化example = Classname() # ()不可少

  

  • 补充知识

    • 对象三特征:value,id,type
    • 函数:面向过程
    • 方法:面向对象
      • 特例:类中的_ _init_ _为构造函数
    • 显示类包含的内容 : classname._ _dict_ _()
    • 构造函数:构造实例的进程函数
      • 语法 : def _ _init_ _(self):
      • self表示当前实例,不可缺少
      • 不能设置return值
      • class执行当前实例的函数
    • 方法:
      • 包含普通方法和类方法
      • 语法 : def methodname(self)
      • self表示当前实例
      • 任意返回值
      • 调用类中方法的语法 : Classname.methodname()
        • self不用输入参数
    • 显示类包含的内容 : classname._ _dict_ _()
      • 特例:类中的_ _init_ _为构造函数
    • eg.
class Game:    # self 表示类实例化后的当前实例    def __init__(self):    # 建立构造函数 pass    # 不能设return值,否则报错    def methodname(self):    # 定义普通方法,类方法下文会提到 pass    # 正常设置return值
  • 类属性

    • classname._ _dict_ _ 显示类/
    • 类属性由类下所有实例共享

仅访用的定义:

  • 可以访问类属性,使用方法(含类方法),但数据不在实例dict里,默认方式为访问 
  • 实例仅访用类
    • 可以访问类属性,使用方法(含类方法),但数据不在实例dict里,默认为访问
    • 若实例无新定义类属性:
      • print自动打印类属性(默认设置为访问)
      • ._ _dict_ _显示实例无类属性
# 验证实例仅访用类# 实例仅访用类定义:# 实例可以访问类属性,使用方法(含类方法),但数据不在实例dict里,默认方式为访问class Game:    system = 'mobile game'  # 类属性:所有实例可以访问    type = 'MOBA'   # 类属性:所有实例可以访问wzry = Game()   # 类的实例化,游戏类:王者荣耀wzryprint(wzry.type)print(Game.__dict__)print('没有新定义实例属性后,实例的dict:')print(wzry.__dict__)jdqs = Game()jdqs.type = 'FPS'print('新定义实例属性后,实例的dict:')print(jdqs.__dict__)
  • 输出结果:
    • 解释:
    • 第6行语句输出MOBA,表示实例的type属性可以访问类属性type(MOBA)
    • 第9行语句输出实例的dict显示为空,表示实例dict无类属性type
    • 第6、9行语句验证了实例仅访用类的概念
    • 第12行语句新定义实例的type属性
    • 第14行语句输出实例的dict显示含新定义的'FPS',表示实例dict有属性type='FPS'