详解:python属性函数和内存管理

    Python编程 wuya 68次浏览 已收录 0个评论

    属性函数

    说明:将成员方法当做属性一样访问

    个人理解:获取类的对象的方法,然后对获取的方法进行重写,装饰。变成自己的属性。

    class User:

    def __init__(self, username, password):

    self.username = username

    self.password = password

     

    # 获取器:获取password属性时自动触发

     @property

    def password(self):

    print(‘你想干啥?’)

    return ‘偷看密码,没门’

     

    # 设置器:设置password属性时自动触发

    @password.setter

    def password(self, password):

    print(‘设置密码’, password)

    self.__dict__[‘password’] = ‘xxx’ + password + ‘yyy’

     

     

    user = User(‘xiaoming’, ‘123456’)

    print(user.password)

     

    获取器:获取password属性时自动触发

    设置器:设置password属性时自动触发

     

    内存管理

     

    From sys import getrefcount

     

    引入getrefcount模块。统计对象被引用的次数。当对象的被引用的次数减为0的时候,调用__del__方法。释放相关的资源。

    代码实现:

    a = 10

    b = 10

     

    print(id(a))

    print(id(b))

     

    from sys import getrefcount

     

    # 不可变变量的引用计数没有意义

    print(getrefcount(a))

     

    lt = [1, 2, 3]

     

    lt2 = lt

     

    # 函数本身会增加1次引用计数

    print(getrefcount(lt))

    del lt2

    print(getrefcount(lt))

     

    class Person:

    def __del__(self):

    print(‘对象即将释放’)

     

    p = Person()

    print(getrefcount(p))

     

    del p

    print(‘OVER’)

     

    引用传递

    # 不可变变量传递的是值

    #可变变量传递的引用

    #默认值是可变变量。永远都是同一个

     


    学海无涯 , 版权所有丨如未注明 , 均为原创丨转载请注明详解:python属性函数和内存管理
    喜欢 (0)
    发表我的评论
    取消评论
    表情 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址