python self使用

Python中self详解


 

使用场景:

假设要对用户的数据进行操作,用户的数据包含name和age。如果用面向过程的话,实现出来是下面这样子的:

 1 def user_init(user,name,age): 
 2   user['name'] = name 
 3   user['age'] = age 
 4   
 5 def set_user_name(user, x): 
 6   user['name'] = x 
 7   
 8 def set_user_age(user, x): 
 9   user['age'] = x 
10   
11 def get_user_name(user): 
12   return user['name'] 
13   
14 def get_user_age(user): 
15   return user['age'] 
16   
17 myself = {} 
18 user_init(myself,'kzc',17) 
19 print get_user_age(myself) 
20 set_user_age(myself,20) 
21 print get_user_age(myself)

可以看到,对用户的各种操作,都要传user参数进去。


如果用面向对象的话,就不用每次把user参数传来传去,把相关的数据和操作绑定在一个地方,在这个类的各个地方,可以方便的获取数据。


之所以可以在类中的各个地方访问数据,本质就是绑定了self这个东西,它方法的第一个参数,可以不叫self,叫其它名字,self只不过是个约定。
下面是面向对象的实现,可以看到,结构化多了,清晰可读。

 1 class User(object): 
 2   def __init__(self,name,age): 
 3     self.name = name 
 4     self.age = age 
 5   
 6   def SetName(self,name): 
 7     self.name = name 
 8   
 9   def SetAge(self,age): 
10     self.age = age 
11   
12   def GetName(self): 
13     return self.name 
14   
15   def GetAge(self): 
16     return self.age 
17   
18 u = User('kzc',17) 
19 print u.GetName() 
20 print u.GetAge()

 

posted @ 2021-01-18 17:02  Pio-GD  阅读(125)  评论(0)    收藏  举报