python 面向对象:认识面向对象

    SEO基础 wuya 48次浏览 已收录 0个评论

    面向对象

    认识面向对象

    • 与面向过程对比:
      • 面向过程:数学逻辑的映射,学会做个好员工
      • 面向对象:生活逻辑的映射,学会做个好领导
    • 生活实例
      手机 电脑
      对象 习大大、普京 我的iPhoneX、你的华为P30 我桌上的Mac、你桌上的T400
    • 官方定义
      • 类:具有相同特征(属性和行为)事物的抽象
      • 对象:某个类的具象
    • 编程语言
      • 类:是一种自定义的数据类型
      • 对象:某个类类型的变量

    面向对象语法

    • 类的定义
      class 类名:
          pass
    • 语法说明
      • 定义类的关键字:class
      • 类名:原则上符合标识符命名规范即可,但是通常都采用大驼峰风格命名,如:UserName
      • 类名后不要忘记冒号,类的内容要进行整体缩进
      • 行为通过方法体现,属性通过变量体现(可以动态添加)
      • 成员访问:
        • 属性:对象.属性名
        • 方法:对象.方法名()
    • 示例:
          # 定义类
      class Person:
          # 行为通过方法进行体现
      
          # 吃饭
          def eat(self):
              print('红烧肉我喜欢吃')
      
          # 睡觉
          def sleep(self):
              print('睡觉是一种生活态度')
              
      # 创建对象
      haotian = Person()
        
      # print(type(haotian))
      # print(haotian)
      
      # 调用成员方法
      haotian.eat()
      haotian.sleep()
      
      # 属性是动态添加的
      haotian.age = 22
      print(haotian.age)
    • self
      class Person:
          def run(self):
              # self表示当前对象,此时调用该方法的对象
              print('{}每天以1m/s的速度锻炼2km'.format(self.name))
      
          def introduce(self):
              # 既可以访问成员属性
              print('我叫{},今年18岁'.format(self.name))
              # 也可以调用成员方法
              self.run()
              
      haotian = Person()
      haotian.name = '浩田'  
      # haotian.run()
      haotian.introduce()
      
      chuangyi = Person()
      chuangyi.name = '创义'
      # chuangyi.run()
      chuangyi.introduce()
    • __str__
      class Person:
          # 没有重写该方法,打印对象时会输出:类名 + 地址
          # 重写次方法,打印对象时会打印该方法的返回值(必须是个字符串)
          def __str__(self):
              return '我叫{},今年{}岁'.format(self.name, self.age)
          
      james = Person()
      james.name = '勒布朗.詹姆斯'
      james.age = 34
       
      # 打印对象时,会调用__str__方法
      print(james)
      
      # 使用str方法时,也会调用__str__方法
      s = str(james)
      print(s)
    • __init__
      class Cat:
          def __str__(self):
              return 'name:{} age:{} color:{}'.format(self.name, self.age, self.color)
      
          # 构造方法:创建对象后,系统会自动调用该方法完成初始化设置
          def __init__(self, name, age, color):
              self.name = name
              self.age = age
              self.color = color
              
      '''
      jiafei = Cat()
      jiafei.name = '加菲'
      jiafei.age = 3
      jiafei.color = 'orange'
      '''
      
      jiafei = Cat('加菲', 3, 'orange')
      print(jiafei)
    • __del__
      class Pig:
          # 析构方法:当对象即将释放时,系统会自动调用该方法
          # 该方法一般做资源释放操作,如:断开数据库连接,文件关闭等
          def __del__(self):
              print('大师兄,我快不行了')
              
      bajie = Pig()
      del bajie
      print('八戒,一路走好!')        
    • 思考:小明手里有两张牌,左手♥K,右手♠A,小明交换两手的牌后,手里分别有什么?
      • 先找到对象:小明、左手、右手、♥K、♠A
      • 根据对象抽象类:人、手、牌
      • 设计相关的类,不断调整和完善
      • 代码:见06-xiaoming.py

    学海无涯 , 版权所有丨如未注明 , 均为原创丨转载请注明python 面向对象:认识面向对象
    喜欢 (0)
    发表我的评论
    取消评论
    表情 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址