• Python中property属性的概论和使用方法


    property属性

    • 概念:
      • 定义一个方法但是使用装饰器property,只可以有一个self形参
      • 可以用这样的属性动态的获取属性的值
    • 定义方式(经典类)
     class Fun():
        @property
        def size(self):
            return 100
    
    fun = Fun()
    print(fun.size)
    

    100

    • 定义方式(新式类)
    class Fun():
        def __init__(self):
            self.num = 0
            
        @property
        def price(self):
            print("get @property")
            return self.num
            
        @price.setter
        def price(self, value):
            self.num = value
            print("set @price.setter")
        
        @price.deleter
        def price(self):
            print("del @price.deleter")
            
    obj = Fun()
    print(obj.price)    # 可以获取价格,调用property装饰器
    obj.price = 100     # 修改价格,调用price.setter装饰器
    del obj.price       # 删除价格,调用price.deleter装饰器
    
    
    get @property
    0
    set @price.setter
    del @price.deleter`
    
    • 使用property方法来创建property属性

    可以使用proerty来替代原有的封装的set和get方法

    #coding=utf-8
    class Foo(object):
        def get_bar(self):
            print("getter...")
            return "laowang"
    
        def set_bar(self, value): 
            """必须两个参数"""
            print("setter...")
            return 'set value' + value
    
        def del_bar(self):
            print("deleter...")
            return "laowang"
    
        BAR = property(get_bar, set_bar, del_bar, "description...")
    
    obj = Foo()
    
    obj.BAR  # 自动调用第一个参数中定义的方法:get_bar
    obj.BAR = "alex"  # 自动调用第二个参数中定义的方法:set_bar方法,并将“alex”当作参数传入
    desc = Foo.BAR.__doc__  # 自动获取第四个参数中设置的值:description...
    print(desc)
    del obj.BAR  # 自动调用第三个参数中定义的方法:del_bar方法
    
    
  • 相关阅读:
    git
    switch切换
    js object 常用方法总结
    pod install速度慢的终极解决方案
    MacBook Pro 初体验
    LINQ以及LINQ to Object 和LINQ to Entities
    WebService/WCF/WebAPI 之间的区别
    owin
    回车和刷新以及Ctr+F5的区别
    ASP.NET Core 启动流程图
  • 原文地址:https://www.cnblogs.com/fandx/p/12124641.html
Copyright © 2020-2023  润新知