Python 属性的各种写法

"""
属性各种写法:
拦截:没有属性,外界操作的是实例变量
有属性,外界操作的是属性对象
"""
1.属性@property:
将方法的使用方式像操作变量一样方便,从而保护实例变量。
2.定义:
@property
def 属性名(self):
return self.__属性名
@属性名.setter
def 属性名(self, value):
self.__属性名= value
3.调用:
对象.属性名 = 数据
变量 = 对象.属性名
4.说明:
通常两个公开的属性,保护一个私有的变量。
 @property 负责读取,@属性名.setter 负责写入
 只写:属性名= property(None, 写入方法名)

# 1. 读写属性
# 快捷键:props + 回车

class MyClass:
    def __init__(self, data=0):
        self.data = data

    @property
    def data(self):
        return self.__data

    @data.setter
    def data(self, value):
        self.__data = value


m01 = MyClass(10)
m01.data = 20
print(m01.data)

# 2. 只读属性
# 适用性:自身确定的数据,不需要外界修改,只需要读取.
# 快捷键:prop + 回车

class MyClass:
def __init__(self):

class MyClass:
    def __init__(self):
        self.__data = 10
    @property
    def data(self):
        return self.__data


m01 = MyClass()
# m01.data = 20 # 不能修改
print(m01.data)

# 3. 只写属性


class MyClass:
    def __init__(self, data=0):
        self.data = data

    data = property()

    # @property
    # def data(self):
    #     return self.__data
    @data.setter
    def data(self, value):
        self.__data = value


m01 = MyClass(10)
m01.data = 20
# print(m01.data) # 不能读取
print(m01.__dict__)
版权声明:seasilo 发表于 2020-12-12 16:50:30。
转载请注明:Python 属性的各种写法 | 海筒自习室

暂无评论

暂无评论...