python 6_面向对象

本文详细介绍了Python的面向对象编程,包括初识对象、成员方法、类和对象、构造方法、封装、继承、多态等核心概念。通过实例演示了构造方法、内置方法的使用,以及类型注解在提升代码可读性上的应用。文章还探讨了Python中的私有成员、复写父类成员、多继承以及如何实现多态。最后,通过一个综合案例展示了面向对象编程在数据分析中的应用。
摘要由CSDN通过智能技术生成

python 6_面向对象

1. 初识对象

在程序中是可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的

  1. 在程序中设计表格,我们称之为 设计类

    class Student:
        name = None			# 创建Student类,记录学生姓名
    
  2. 在程序中打印生产表格,我们称之为 创建对象

    stu_1 = Student()
    stu_2 = Student()		# 基于类创建对象
    
  3. 在程序中填写表格,我们称之为 对象属性赋值

    stu_1.name = "ausgelebt"
    stu_2.name = "董二千"			# 为对象赋予名称属性值
    

2. 成员方法

  • 类的定义和使用

    • 类的定义

      class className:		# class是关键字,表示要定义类
          类的属性			 # 类的属性,定义在类中的变量(成员变量)
          类的行为			 # 类的行为,定义在类中的函数(成员方法)
      
    • 类的使用:对象 = 类名称()

  • 成员方法

    • 在类中定义成员方法和定义函数基本一致

      def 方法名(self, 形参1, ......, 形参n):
          方法体
      
    • 但仍有细微差别:self关键字(成员方法定义的时候必须填写)

      • 用来表示类对象本身的意思
      • 当我们使用类对象调用方法的是,self会自动被python传入
      • 在方法内部,想要访问类的成员变量,必须使用self
      • self关键字,尽管在参数列表中,但是传参的时候可以忽略它
  • 示例

    class Student:
        name = None
        gender = 1
        nationality = None
        native_place = None
        age = 20
        def say_hello(self):
            print("hello, i am {}".format(self.name))
    
        def say_hello2(self, s):
            print(s)
    
    stu = Student()
    stu.name = "ausgelebt"
    
    print(stu)
    print(stu.name)
    stu.say_hello()
    stu.say_hello2("hello")
    

    image-20240415090347648

3. 类和对象

类只是一种程序内的“设计图纸”,需要基于图纸生产实体(对象),才能正常工作

这就是面向对象编程:设计类,基于类创建对象,由对象做具体的工作

4. 构造方法

  • 构造方法_ _ init _ _()

    • 在创建类对象(构造类)的时候,会自动执行
    • 在创建类对象(构造类)的时候,将传入参数自动传递给构造方法使用
  • 注意事项

    • 构造方法也是成员方法,也需要有self关键字
    • 在构造方法内定义成员变量,需要用到self关键字
  • 示例

    class Student:
        name = None
        age = None
        address = None
        def __init__(self, name, age, address):
            self.name = name
            self.age = age
            self.address = address
    
    for i in range(1, 4):
        print("当前录入第{}位学生信息,总共需录入3位学生信息".format(i))
        name = input("请输入学生姓名:")
        age = input("请输入学生年龄:")
        address = input("请输入学生地址:")
        stu = Student(name, age, address)
        print("学生{}信息录入完成,信息为:姓名:{},年龄:{},地址:{}".format(i, stu.name, stu.age, stu.address))
    

    image-20240415094340156

5. 其它内置方法

内置的类方法,各自有各自特殊的功能,这些内置方法称之为魔术方法

方法 功能
__ init __ 构造方法,可用于创建类对象的时候设置初始化行为
__ str __ 用于实现类对象转字符串的行为
__ lt __ 用于2个类对象进行小于或者大于比较
__ le __ 用于2个类对象进行小于等于或者大于等于比较
__ eq __ 用于2个类对象进行相等比较
  • _ _ str_ _字符串方法

    • 控制类转换为字符串

    • 返回值为字符串,内容自行定义

    • 示例:

      class Student:
          name = None
          age = None
          address = None
          def __init__(self, name, age, address):
              self.name = name
              self.age = age
              self.address = address
      
      stu = Student('ausgelebt', 20, 'JiLin')
      print(stu)
      

      image-20240415095831551

      class Student:
          name = None
          age = None
          address = None
          def __init__(self, name, age, address):
              self.name = name
              self.age = age
              self.address = address
          def __str__(self):
              return "name = {}, age = {}, address = {}".format(self.name, self.age, self.address)
      
      stu = Student('ausgelebt', 20, 'JiLin')
      print(stu)
      

      image-20240415100013593

  • _ _ lt _ _ 小于符号比较方法

    • 直接对两个对象进行比较是不可以的,但在类中实现__ lt __方法,即可同时完成 小于符号 和 大于符号 两种比较

    • 传入self和other(另一个类对象),返回True或者False,内容自行定义

    • 示例:

      class Student:
          name = None
          age = None
          def __init__(self, name, age
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值