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()

浙公网安备 33010602011771号