面向对象-类和对象成员的操作

获取类和对象中所属成员的信息
类:类名.__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 #输出结果:{}

 

posted @ 2019-05-12 10:16  双伟科技  阅读(389)  评论(0编辑  收藏  举报