博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象-类和对象成员的操作
阅读量:6000 次
发布时间:2019-06-20

本文共 3674 字,大约阅读时间需要 12 分钟。

获取类和对象中所属成员的信息

类:类名.__dict__
对象:对象名.__dict__

类成员的操作:

成员属性:(和变量一样)
访问 类名.成员属性名
修改 类名.成员属性名 = 新值
删除 del 类名.成员属性名
添加 类名.成员属性名 = 值

成员方法:

访问 类名.方法名()
修改 类名.方法名 = 新的函数
删除 del 类名.方法名
添加 类名.新方法名 = 函数(也可以是lambda表达式)

对象成员的操作:
成员属性:
访问 对象.成员属性名
修改 对象.成员属性名 = 新值
添加 对象.成员属性名 = 值
删除 del 对象.成员属性名 (必须是属于当前对象的成员才可以)

成员方法:

访问 对象.成员方法名()
修改 对象.成员方法名 = 新的函数
添加 对象.成员方法名 = 函数
删除 del 对象.成员方法名

注意事项:

1.实例化对象的时候通常情况下类中的成员不会在对象中复制一份
2.访问对象成员的时候,只要没有该成员,对象会向实例化他的类查找。
3.对象成员的添加和修改,都只会影响当前对象本身,不会影响类和其他对象
4.删除对象成员时候,必须是该对象自身的成员才可以删除,不可以删除类和其他对象~

 

类和对像成员操作实例

1 #电脑类  2 class Computer:  3     #成员属性  4     cpu = 'i7-7890'  5     memory = '32G'  6     disk = '1T'  7     display = '120Hz'  8     color = '黑色'  9  10     #成员方法 11     #播放电脑 12     def play_movie(self): 13         print('电脑播放电影中') 14  15     #播放音乐 16     def play_music(self): 17         print('电脑播放音乐中') 18  19     #玩游戏 20     def play_game(self): 21         print('正在使用电脑玩游戏') 22  23  24 #实例化类 获取电脑的对象 25 pc = Computer() 26  27 #对于类的相关操作(很少使用) 28 #检测类中的成员 29 print(Computer.__dict__) 30  31 #成员属性------------------------------------------------- 32  33 #访问 34 print(Computer.cpu) 35 #输出结果:i7-7890 36 print(Computer.memory) 37 #输出结果:32G 38  39 #修改 40  41 print(Computer.__dict__) #类.__dict__:以字典结构获取类所有成员 42 #输出结果:{...略...  'color': '黑色',  ...略...} 43 Computer.color = '灰色'#相当于变量重新赋值 44 print(Computer.__dict__) 45 #输出结果:{...略...  'color': '灰色',  ...略...} 46  47 #添加 48 print(Computer.__dict__) 49 #输出结果:{...略... } 50 Computer.keyboard = '机械键盘' 51 print(Computer.__dict__) 52 #输出结果:{...略...  'keyboard': '机械键盘'} 53  54  55 #删除 56 print(Computer.__dict__) 57 #输出结果:{...略... } 58 del Computer.cpu 59 print(Computer.__dict__) 60 #输出结果:{...略... -->少了cpu项} 61  62  63 #成员方法------------------------------------------- 64  65 #访问 66 Computer.play_movie(None) 67  68 #添加(work)  不推荐使用 69 #定义一个函数 70 def work(): 71   print('使用电脑办公中') 72 #输出结果:电脑播放电影中 73 Computer.work = work #也可以使用lambda表达式添加 74 print(Computer.__dict__) 75 #输出结果:{...略... } 76  77 #修改 78 Computer.play_movie(None) 79 #输出结果:电脑播放电影中 80 Computer.play_movie = lambda : print('电影暂停中') 81 #输出结果:电影暂停中 82 Computer.play_movie() 83  84 #删除 85 print(Computer.__dict__) 86 #输出结果:{...略... } 87 del Computer.play_movie #一定不要加括号。 88 print(Computer.__dict__) 89 #输出结果:{...略... -->少了 play_movie 方法} 90  91 #============================================= 92 #对于对象的相关操作 93 #检测对象中成员 94 print(pc.__dict__) 95  96 #成员属性的操作 97  98 #访问 99 print(pc.cpu)100 #输出结果:i7-7890101 print(pc.disk)102 #输出结果:1T103 104 #修改105 print(pc.__dict__)106 #输出结果:{}107 108 #pc.cpu = 'i9-7890'109 print(pc.__dict__)110 #输出结果:{'cpu': 'i9-7890'}111 112 113 #添加114 print(pc.__dict__)115 #输出结果:{}116 117 pc.closth = '钢化膜'118 print(pc.__dict__)119 #输出结果:{'closth': '钢化膜'}120 121 122 #删除123 print(pc.__dict__)124 #输出结果:{}125 del pc.cpu #不可以删除不属于当前对象的成员126 #添加一个成员127 pc.closth = '钢化膜'128 print(pc.__dict__)129 #输出结果:{'closth': '钢化膜'}130 del pc.closth131 print(pc.__dict__)132 #输出结果:{}133 134 135 #成员方法的操作136 137 #访问138 pc.play_movie()   #和类访问不同,self会自动传入一个数据139 #输出结果:电脑播放电影中140 #添加141 print(pc.__dict__)142 #输出结果:{}143 pc.www = lambda : print('电脑上网中')144 print(pc.__dict__)145 #输出结果:{'www': 
at 0x00000169F5EBD378>}146 147 #修改148 pc.play_game()149 #输出结果:正在使用电脑玩游戏150 pc.play_game = lambda :print('LOL中~')151 pc.play_game()152 #输出结果:LOL中~153 print(pc.__dict__)154 #输出结果:{'play_game':
at 0x0000029C9154D378>}155 156 #删除157 #添加一个方法158 pc.input = lambda : print('电脑打字中~')159 print(pc.__dict__)160 #输出结果:{'input':
at 0x0000013D3B02D378>}161 del pc.input162 print(pc.__dict__)163 #输出结果:{}

 

转载于:https://www.cnblogs.com/lws865/p/10851252.html

你可能感兴趣的文章
**加密解密基础、PKI及SSL、创建私有CA**
查看>>
为一个REST服务使用Spring Security的基本和摘要认证
查看>>
测试管理小记
查看>>
Maven 配置
查看>>
FreeBSD 9.0 的 GPT 纯 ZFS 安装
查看>>
我的友情链接
查看>>
谷歌眼镜为何禁止开发者挣钱
查看>>
Office PowerPoint之ppt动画版"DUANG"!!!
查看>>
webpack前端自动化构建方案
查看>>
十大技巧快速提升Android应用开发性能
查看>>
通讯录的简单实现
查看>>
夏普shl25刷机救砖实战指南
查看>>
性能测试培训:Ajax接口级性能测试之jmeter版
查看>>
帮助你高效开发Ajax应用的超酷jQuery插件 - AjaxML
查看>>
超棒的仪表盘javascript类库 - justGage
查看>>
使用opennlp进行文档分类
查看>>
sysctl 中 vm.overcommit_memory 的含义
查看>>
ecj采集工具介绍
查看>>
Bring up interface eth0:Device eth0 does not seem to be present,delaying initialization
查看>>
Permanently remove files from SVN
查看>>