python面向对象编程

目录

类的定义:

类的实例化:

类中的静态变量:

内存分析图:

类的继承:


类的定义:

  • 绑定方法:在类中定义的方法

  • 类(Class): 用来描述具有相同属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。其中的对象被称作类的实例。

  • 实例:也称对象。通过类定义的初始化方法,赋予具体的值,成为一个”有血有肉的实体”。

  • 实例化:创建类的实例的过程或操作。

  • 实例变量:定义在实例中的变量,只作用于当前实例。

  • 类变量:类变量是所有实例公有的变量。类变量定义在类中,但在方法体之外。

  • 数据成员:类变量、实例变量、方法、类方法、静态方法和属性等的统称。

  • 方法:类中定义的函数。

  • 静态方法:不需要实例化就可以由类执行的方法

  • 类方法:类方法是将类本身作为对象进行操作的方法。

  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对父类的方法进行改写,这个过程也称override。

  • 封装:将内部实现包裹起来,对外透明,提供api接口进行调用的机制

  • 继承:即一个派生类(derived class)继承父类(base class)的变量和方法。

  • 多态:根据对象类型的不同以不同的方式进行处理。

类的实例化:
  • 类名首字母大写

  • def __init__(self):初始化函数

  • 首先初始化实例的参数(属性)

    •  import math
       ​
       class Circle:
      
           num = 1#所有属性公用的静态变量
      
           def __init__(self,pai,r):
               self.pai = pai
               self.r = r
       ​
           def circumference(self):
               circle_circumference = self.r*self.pai*2
               print('圆的周长保留两位小数后是%.2f'%circle_circumference)
       ​
           def area(self):
               circle_area = self.pai*self.r*self.r
               print('圆的面积保留两位小数后是%.2f'%(circle_area))
       ​
       pai = math.pi
       circle = Circle(pai,3)
       circle.circumference()
       circle.area()
       #>>>圆的周长保留两位小数后是18.85
       #>>>圆的面积保留两位小数后是28.27

类中的静态变量:
  • 静态变量的修改:对象调用静态变量进行赋值是不能修改公共静态变量的值的

  • class Student:
         #对象初始化函数,在实例化对象之后,默认先执行Init函数
         def __init__(self,name,s_class,s_course):
             self.name = name
             self.s_course = s_course
             self.s_class = s_class
         #类的绑定方法
         def show_sinfo(self):
             print('{}本学期在{}班级学习{}课程'.format(self.name,self.s_class,self.s_course))
     ​
     class Teacher:
         def __init__(self,name):
             self.name = name
     ​
         def show_tinfo(self):
             print('{}老师本学期授课'.format(self.name))
     ​
     class Course:
         def __init__(self,course_teacher,name):
             self.course_teacher = course_teacher
             self.name = name
         def show_cinfo(self):
             print('{}课程本学期由{}老师教授'.format(self.name,self.course_teacher))
     ​
     teacher_hua = Teacher('滑')
     teacher_xue = Teacher('薛')
     course_hua = Course('滑','python')
     course_xue = Course('薛','java')
     student_bai = Student('小明','2107',[course_hua,course_xue])
     #输出学生小明本学期在2107班跟着滑老师学习python
     for i in student_bai.s_course:
         print('{}本学期跟随{}老师在{}班级学习{}课程'.format(student_bai.name,i.course_teacher,student_bai.s_class,i.name))

内存分析图:
  • 开始执行py文件时,内存会首先开辟出已经创建好的类空间,类空间包含类中的绑定方法、约束属性

  • 程序执行到实例(对象)时,会开辟实例的空间,此时类指针会指向其类

类的继承:
  1. 继承:把拥有相同属性和行为的内容(将重复的代码)提取到一个新的类

  2. 子类的初始化函数必须调用父类的初始化函数init

  3. super()在当前类的方法中代表的就是父类

  4. 继承关系的表示:类名A(类名B)

  5. A继承了B,A是子类/派生类,B是父类/超类/基类

  6. 子类拥有父类的所有方法和属性,子类可以使用父类的静态变量,但是不能修改父类的静态变量

  7. 子类中拥有与父类同名的方法时,调用的是内存地址中最近的(就近原则)

  8. 父类中不想被子类继承的方法命名:def __方法名()

  9. 代码:

#创建父类
 class Animal:
     #初始化对象,定义类中可调用的形式参数(属性)
     #也是实例化该对象时,需传入的实际参数
     def __init__(self,name,age,color,breed):
         self.name = name
         self.age = age
         self.color = color
         self.breed = breed
 ​
     #定义类的绑定方法
     def sleep(self):
         print('{}需要睡觉'.format(self.name))
     def eat(self):
         print('{}需要吃粮'.format(self.name))
 ​
 #定义一个名为Dog的类,继承自Animal,格式:class 类名(父类)
 class Dog(Animal):
     #初始化对象
     def __init__(self,name,age,color,breed,job_name):
         #通过super()继承父级的属性初始值,super()代表父类
         super().__init__(name,age,color,breed)
         self.job_name = job_name
 ​
     def d_job(self):
         print('{}的职责是{}'.format(self.name,self.job_name))
     #方法重写:当父级方法无法满足子级需求时,可进行重写
     def eat(self):
         print('{}的工作是{},食物是狗粮'.format(self.name,self.job_name))
 ​
 #实例化对象
 dog = Dog('胖胖',3,'yellow','中华田园犬','看家陪玩')
 dog.eat()
  • 子类中的方法重写:

  • 内存分析图(继承)

  • 子类调用方法的寻找顺序:首先在子类的对象名称空间内寻找,找不到在类名称空间,再父级空间找

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python向对象程序设计是一种编程范式,它将程序看作是一系列对象的集合,每个对象都有自己的属性和方法。在Python中,可以使用抽象基类(Abstract Base Class,ABC)来实现抽象类,抽象类是不能被实例化的类,只能被其它类继承和实现。 在Python中,定义一个类可以使用class关键字,可以在类中定义构造方法(__init__)和其他方法。构造方法用于初始化对象的属性,其他方法用于描述对象的行为。 例如,定义一个Car(汽车)类,可以使用构造方法来初始化汽车的名称,然后定义一个getName方法来获取汽车的名称。可以通过创建Car类的对象来使用这些方法。 另外,在Python中可以定义父类和子类,子类可以继承父类的属性和方法,并且可以重写父类的方法。可以使用super关键字来调用父类的方法。 例如,定义一个People(人)类,其中包括构造方法和公有方法speak,然后定义一个Student(学生)类,继承自People类,并且重写了speak方法。可以创建Student类的对象,并调用其自己定义的speak方法和父类的speak方法。 总之,Python面向对象程序设计提供了丰富的语法和特性,可以利用类、对象、继承和重写等概念来构建复杂的程序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【python】面向对象程序设计(基础篇)](https://blog.csdn.net/m0_67388084/article/details/128057443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值