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

ernestwang 860 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条评论)

还木有评论哦,快来抢沙发吧~

复制成功
微信号: irenyuwang
关注微信公众号,站长免费提供流量增长方案。
我知道了