绑定方法
绑定对象
绑定给对象的方法,对象来调用,会把自己当成第一个参数传到函数里。
class User(): # 定制对象独有属性 def __init__(self, name, pwd): self.name = name self.pwd = pwd # 将方法绑定给对象 def get_user_info(self): print('用户名:%s 密码:%s' % (self.name, self.pwd)) # 产生对象 user1 = User('tom', 123) # 执行方法 user1.get_user_info() # 结果:用户名:tom 密码:123
绑定类
绑定给类的方法,类来调用,会把类名当成第一个参数传到函数里。
通过装饰器classmethod来将方法绑定给类。
class User(): # 定制对象独有属性 def __init__(self, name, pwd): self.name = name self.pwd = pwd # 将方法绑定给类 @classmethod def get_user_info(cls): print('用户名:%s 密码:%s' % ('tom', 123)) # 直接执行类名.方法 User.get_user_info() # 结果:用户名:tom 密码:123
静态方法
当一个方法既不需要传入类的数据,也不需要传入对象的数据,它就可以不用绑定类或对象 。
使用装饰器staticmethod来使方法成为一个静态方法。
class User(): # 定制对象独有属性 def __init__(self, name, pwd): self.name = name self.pwd = pwd # 无需传值 @staticmethod def get_user_info(): print('用户名:%s 密码:%s' % ('tom', 123)) # 直接执行类名.方法 User.get_user_info() # 结果:用户名:tom 密码:123
隐藏属性
隐藏的意义
将属性隐藏的目的是不让外部使用,以达成严格控制外部数据的目的。
隐藏属性外部并非不可使用,可在类内部开放借口进行访问。
隐藏方式
在属性前加__使属性被隐藏。
性质:1.在类定义阶段,发生了语法上的变形:_类名__属性名。
2.隐藏对外不对内。
3.只在类定义的阶段发生变形,其他情况就不发生变形了。
class User(): # money属性隐藏 __money = 100 # 定制对象独有属性 def __init__(self, name, pwd): self.name = name self.pwd = pwd # 将方法绑定给对象 def get_user_info(self): print('用户名:%s 密码:%s' % (self.name, self.pwd)) # 开放接口修改money属性 def get_money(self, m): if not m.isdigit: print('输入的不是数字') else: self.__money = m return m user1 = User('tom', 123) print(user1.get_money('55')) # 结果55
property装饰器
使用property装饰器的作用是可以将方法伪装成属性,在调用时可以不用加括号。
class Student(): def __init__(self, name, age): self.__name = name self.age = age def __tell_info(self): print('name: %s, age: %s' % (self.__name, self.age)) # 把方法伪装成属性 @property def name(self): return "name:%s" % self.__name # 伪装成属性添加 @name.setter def name(self, v): if type(v) is not str: print('数据类型不合法') return self.__name = v # 伪装成属性删除 @name.deleter def name(self): del stu.__name stu = Student('tom', 18) print(stu.name) stu.name = 123 print(stu.name) del stu.name print(stu.__dict__) ''' 结果: name:tom 数据类型不合法 name:tom {'age': 18} '''