
面向对象
发布日期:2021-05-06 08:38:44
浏览次数:23
分类:技术文章
本文共 6453 字,大约阅读时间需要 21 分钟。
面向对象
一、类的定义
# 面向对象# 有意义的面向对象的代码# 类 = 面向对象# 类、对象# 类的基本作用:封装class Student(): name = "" # 全局变量 age = 0 def print_file(self): print("name: " + self.name) print("age: " + str(self.age))student = Student()student.print_file()
二、浅谈函数与方法的区别
方法:设计层面
函数:程序运行、过程式的一种称谓
三、类与对象
类:类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。
四、构造函数
class Student(): # 一个班级的学生人数 # 类变量 sum = 0 name = "曹曹" age = 20 # 实例变量 def __init__(self, name, age): # 构造函数 # 初始化对象的属性 self.name = name self.age = age # 行为 与 特征 def do_homework(self): print("homework")student = Student("小唐", 18)print("tudent.name: %s" %student.name)print("student.age: %s" %student.age)print("Student.sum: %s"%Student.sum)print("Student.name: %s"%Student.name)print("Student.age: %s" %Student.age)
运行结果:
五、区别模块变量与类中的变量
class Student(): # 一个班级的学生人数 # 类变量 sum = 0 name = "曹曹" age = 20 # 实例变量 def __init__(self, name, age): # 构造函数 # 初始化对象的属性 self.name = name self.age = age # 行为 与 特征 def do_homework(self): print("homework")student = Student("小唐", 18)print("tudent.name: %s" %student.name)print("student.age: %s" %student.age)print("Student.sum: %s"%Student.sum)print("Student.name: %s"%Student.name)print("Student.age: %s" %Student.age)
运行结果:
六、类变量与实例变量
class Student(): # 一个班级的学生人数 # 类变量 sum = 0 name = "曹曹" age = 20 # 实例变量 def __init__(self, name, age): # 构造函数 # 初始化对象的属性 self.name = name self.age = age # 行为 与 特征 def do_homework(self): print("homework")student = Student("小唐", 18)print("tudent.name: %s" %student.name)print("student.age: %s" %student.age)print("Student.sum: %s"%Student.sum)print("Student.name: %s"%Student.name)print("Student.age: %s" %Student.age)
运行结果:
七、类与对象的变量查找顺序
实例变量 >>> 类变量 >>> 类父类的变量
class Student(): # 一个班级的学生人数 # 类变量 name = "曹曹" age = 20 # 实例变量 def __init__(self, name, age): # 构造函数 # 初始化对象的属性 self.name = name self.age = age # 行为 与 特征 def do_homework(self): print("homework")student = Student("小唐", 18)print(student.__dict__)print("tudent.name: %s" %student.name)print("student.age: %s" %student.age)print(Student.__dict__)print("Student.name: %s"%Student.name)print("Student.age: %s" %Student.age)
运行结果:
八、self与实例方法
class Student(): # 一个班级的学生人数 # 类变量 name = "曹曹" age = 20 # 实例变量 def __init__(self, name, age): # 构造函数 # 初始化对象的属性 self.name = name self.age = age # 行为 与 特征 # 实例方法 def do_homework(self): print("homework")student = Student("小唐", 18)student.do_homework()
运行结果:
九、在实例方法中访问实例变量与类变量
class Student(): # 一个班级的学生人数 # 类变量 name = "曹曹" age = 20 sum_num = 100 # 实例变量 def __init__(self, name, age): # 构造函数 # 初始化对象的属性 self.name = name self.age = age # 行为 与 特征 # 实例方法 def do_homework(self): # 调用实例变量 print(self.name) print(self.age) # 调用类变量 print(Student.sum_num) print(self.__class__.sum_num)student = Student("小唐", 18)student.do_homework()
运行结果:
十、类方法
class Student(): # 一个班级的学生人数 # 类变量 sum_num = 100 # 实例变量 def __init__(self, name, age): # 构造函数 # 初始化对象的属性 self.name = name self.age = age self.__class__.sum_num += 1 print("班级学生人数为:" + str(self.__class__.sum_num)) # 类方法 @classmethod def plus_sum(cls): cls.sum_num += 1 print(cls.sum_num)student = Student("小唐", 18)student.plus_sum()Student.plus_sum()
运行结果:
十一、静态方法
class Student(): # 一个班级的学生人数 # 类变量 sum_num = 100 # 实例变量 def __init__(self, name, age): # 构造函数 # 初始化对象的属性 self.name = name self.age = age # 类方法 @classmethod def plus_sum(cls): cls.sum_num += 1 print(cls.sum_num) # 静态方法 @ staticmethod def add(x, y): print(x + y)student = Student("小唐", 18)student.add(2, 3)Student.add(4, 5)
运行结果:
十二、成员可见性:公开和私有
class Student(): # 一个班级的学生人数 # 类变量 sum_num = 100 # 实例变量 def __init__(self, name, age): # 构造函数 # 初始化对象的属性 self.name = name self.age = age # 私有变量 self.__score = 0 def marking(self, score): if score < 0: return "分数不能为负分!" self.__score = score return self.name + "同学本次考试分数为:" + str(self.__score)student = Student("小唐", 18)result = student.marking(-1)print(result)result = student.marking(59)print(result)
运行结果:
十三、没有什么是不能访问
class Student(): # 一个班级的学生人数 # 类变量 sum_num = 100 # 实例变量 def __init__(self, name, age): # 构造函数 # 初始化对象的属性 self.name = name self.age = age # 私有的 self.__score = 0 def marking(self, score): if score < 0: return "分数不能为负分!" self.__score = score return self.name + "同学本次考试分数为:" + str(self.__score)student1 = Student("小唐", 18)result = student1.marking(59)print(result)# 新添加了一个实例变量__scorestudent1.__score = 100print(student1.__dict__)print(student1.__score)student2 = Student("小曹", 18)print(student2.__dict__)print(student2.__score)
运行结果:
十四、继承
注意:python中,一个子类可以继承多个父类。
实例:
1、父类:
class Person(): # 实例变量 def __init__(self, name, age): # 构造函数 # 初始化对象的属性 self.name = name self.age = age def getName(self): return self.name
2、子类:
from c9 import Personclass Student(Person): # 实例变量 def __init__(self, school, name, age): # 构造函数 # 初始化对象的属性 self.school = school Person.__init__(self, name, age)student = Student("人民路小学", "小唐", 18)print(student.school)print(student.name)print(student.age)
运行结果:
十五、子类方法调用父类方法:super关键字
1、父类:
class Person(): # 实例变量 def __init__(self, name, age): # 构造函数 # 初始化对象的属性 self.name = name self.age = age def getName(self): return self.name def doHomeWork(self): print("This is a parent method!")
2、子类:
from c9 import Personclass Student(Person): # 实例变量 def __init__(self, school, name, age): # 构造函数 # 初始化对象的属性 self.school = school # 不建议 # Person.__init__(self, name, age) super(Student, self).__init__(name, age) def doHomeWork(self): super(Student, self).doHomeWork() print("This is a children method!")student = Student("人民路小学", "小唐", 18)print(student.school)print(student.name)print(student.age)student.doHomeWork()
运行结果:
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年03月19日 09时22分25秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
从零构建通讯器--5.2三次握手,telnet,wireshark
2019-03-01
egg:如何在控制器中拿到前端传的参数
2019-03-01
struct 模块
2019-03-01
编程与编程语言分类
2019-03-01
【 UVA - 572 】 Oil Deposits (DFS水题)
2019-03-01
ES6 JavaScript 重新認識 Promise
2019-03-01
分享九款不同页面404源码html
2019-03-01
404页圈小猫游戏代码
2019-03-01
好看清新卡通人物404单页网站源码
2019-03-01
简洁仿t猫404页html源码
2019-03-01
Kotlin实现冒泡排序
2019-03-01
NodeJS下TypeScript环境安装
2019-03-01
汽车后市场,小程序为何独占鳌头
2019-03-01
短视频小程序,互联网新风口
2019-03-01
Mybatis-plus代码生成器模板(MySQL数据库)
2019-03-01
使用redis管理Mybatis的二级缓存
2019-03-01
使用redis管理Mybatis-Plus的二级缓存
2019-03-01
Mybatis中的SQL语句等于、不等于和模糊查询的语法
2019-03-01
使用 github 搜索
2019-03-01