python中面向对象相关知识点(全面总结笔记)

本文详细介绍了Python中的面向对象编程,包括类与对象的概念、面向对象的语法、类的成员访问、构造方法、析构方法、__str__方法、多态、继承和属性函数。还展示了如何创建扑克牌、手和人的类,并通过实例演示了对象间的交互。最后,讨论了类的内置函数、异常处理、数据持久化和自定义异常。
摘要由CSDN通过智能技术生成

面向对象

  • 与面向过程对比:
    • 面向过程:数学逻辑的映射,学会做个好员工
    • 面向对象:生活逻辑的映射,学会做个好领导
  • 官方定义:
    • 类:具有相同特征(属性和行为)的事物的抽象
    • 对象:某个类的具象
  • 编程语言:
    • 类:是一种自定义的数据类型
    • 对象:某个类类型的变量

面向对象语法

  • 类的定义:
    class 类名:
    内容

  • 语法说明:

    • 定义类需要使用关键字class
    • 类名:原则上只要符合标识符命名规范即可,但是通常我们都使用大驼峰(每个单词首字母大写)风格命名
      • 如:UserName
    • 类名后面的’:'不要忘记
    • 类的内容要进行整体缩进
    • 行为:通过方法体现,在类中定义相关的函数即可(第一个参数通常是self)
    • 属性:通过变量体现,在需要时动态添加,很多时候定义类时没有体现
    • 成员访问:
      • 属性:对象.属性名
      • 方法:对象.方法名()
  • 示例:
    # 定义类
    class Person:
    # 行为通过方法体现

        # 吃饭
        def eat(self):
            print('红烧鸡腿我喜欢吃')
    
        # 睡觉
        def sleep(self):
            print('睡觉也是一种生活态度')
            
    # 定义对象
    liang = Person()
    # 调用方法
    liang.eat()
    liang.sleep()
    # 属性时动态添加的
    liang.name = '某某某'
    # 获取属性
    print(liang.name)
    
  • self使用
    class Person:
    def run(self):
    # self表示当前对象:谁调用该方法就表示谁
    print(’{}每天以2m/s的速度慢跑5km’.format(self.name))

        def introduce(self):
            # 不但可以访问成员属性
            print('我叫{}'.format(self.name))
            # 还可以调用成员方法
            self.run()
            
    fei = Person()
    fei.name = '路人甲'
    fei.run()
    fei.introduce()
    
    long = Person()
    long.name = '路人乙'
    long.introduce() 
    
    • 说明:
      1.类中的每个成员方法都有一个self参数,调用的时候不需要传递该参数
      2.该参数的名字可以不是self,只不过通常我们都使用这个
      3.self表示当前对象,对调用该方法self就代表谁,哪个对象调用就表示哪个对象
      4.通过self可以访问成员属性,也可以调用成员方法
  • __str__方法
    class Person:
    # 使用print方法打印对象,默认打印 类名 + 地址
    # 若想打印特定内容,重写该方法即可,要求返回一个字符串
    def str(self):
    return ‘我叫{},今年{}’.format(self.name, self.age)

    james = Person()
    james.name = '路人丙'
    james.age = 33
    print(james)    
    
  • 构造方法:创建对象后,初始化属性时,系统会自动调用该方法
    class Cat:
    def str(self):
    return ‘name:{},age:{},color:{}’.format(self.name, self.age, self.color)

        # 构造方法:创建对象后,初始化系统就会自动调用该方法
        def __init__(self, name, age, color):
            print('__init__')
            self.name = name
            self.age = age
            self.color = color
            
    # 这种形式比较繁琐
    # tom = Cat()
    # tom.name = 'Tom'
    # tom.age = 3
    # tom.color = '蓝色'
    
    # 这种比较简洁
    tom = Cat('Tom', 3, '蓝色')
    print(tom) 
    
  • 析构方法:当对象释放时系统会自动调用,通常用于释放资源
    class Pig:
    # 析构方法:当对象释放时,系统会自动调用
    # 若手动使用del删除,则会立即调用该方法
    # 该方法一般做资源释放处理:数据库连接断开,文件关闭
    def del(self):
    print(‘大师兄,我不行了’)

    bajie = Pig()
    del bajie
    print('八戒,一路走好!')        
    
  • 示例:小明手里有两张牌,左右♥K,右手♠A,小明交换两手的牌后,手里分别是什么?

    • 思路:

      • 先找到对象:左手、右手、♥K、♠A、小明
      • 根据对象抽象出对应的类:人、手、牌
      • 根据需要写出相应的逻辑,很可能反过来完善类的设计
      • 按照题目要求创建相关对象,调用相关方法,实现相关功能
    • 代码:

      对象:小明、左手、右手、♥K、♠A

      类:人、手、牌

      设计相应的类

      扑克牌

      class Poker:
      def init(self, color, number):
      self.color = color
      self.number = number

        def __str__(self):
        	return '{}{}'.format(self.color, self.number) 
      

      创建两张牌

      p1 = Poker(‘♥’, ‘K’)
      p2 = Poker(‘♠’, ‘A’)

      手的类

      class Hand:
      def init(self, poker):
      self.poker = poker

        def hold_poker(self, poker):
            self.poker = poker
      

      创建左右两只手

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值