面向对象-类和对象成员的操作
获取类和对象中所属成员的信息
类:类名.__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-7890 101 print(pc.disk) 102 #输出结果:1T 103 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.closth 131 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': <function <lambda> 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': <function <lambda> at 0x0000029C9154D378>} 155 156 #删除 157 #添加一个方法 158 pc.input = lambda : print('电脑打字中~') 159 print(pc.__dict__) 160 #输出结果:{'input': <function <lambda> at 0x0000013D3B02D378>} 161 del pc.input 162 print(pc.__dict__) 163 #输出结果:{}