面向对象(二)

绑定方法

  绑定对象

    绑定给对象的方法,对象来调用,会把自己当成第一个参数传到函数里。

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}
'''

面向对象(二)

 

上一篇:点击后明文和密文的切换


下一篇:Mybatis初学习