python学习之路--属性,,本篇文章主要是分享p


本篇文章主要是分享pyton里面的属性的设置和获取使用:Property属性的内置函数:

1.__getattr__(self, name)
  -定义当用户试图获取一个不存在的属性时的行为
2.__getattribute__(self, name)
  -定义当该类的属性被访问时的行为
3.__setattr__(self, name, value)
  -定义当一个属性被设置时的行为
4.__delattr__(self, name)
  -定义当一个属性被删除时的行为
  一个对象的属性在对象里面其实是由一个字典表来管理的,通过object.__dict__可以查看,返回的是一个字典表,显示的是每一个属性名的字符串和属性相对应的值;

以上内置函数调用顺序是:

1.设置当前的属性,会调用__setattr__(self, name, value)方法来设置当前的属性,如果属性存在,直接设置属性的值,如果属性不存在,则会增加一个该属性

2.获取属性的值,会调用__getattribute__(self, name)方法来获取,调用后如果属性存在,则直接获取属性的值,如果属性不存在,则会调用__getattr__(self, name)方法来获取

3.删除属性调用__delattr__(self, name)方法来删除属性

可以运行以下例子不难看出对象的属性的设置和调用:

# -*- coding: utf-8 -*-
"""

@author: zzj

"""

class PropertyTest:
  def __init__(self, size = 10):
    self.size = size
  def __getattribute__(self, name):
    print("正在访问该类的属性")
    return super().__getattribute__(name)
  def __getattr__(self, name):
    print("该属性不存在")
  def __setattr__(self, name, value):
    print("设置当前属性")
    return super().__setattr__(name, value)
  def __delattr(self, name):
    print("删除当前属性")
    super().__delattr__(name)

  def GetSize(self):
    return self.size
  def SetSize(self, value):
    self.size = value
  def DelSize(self):
    del self.size
  x = property(GetSize, SetSize, DelSize)


C = PropertyTest()
print(C.size)

C.x = 1
print(C.size)
print(C.x)

del C.x
print(C.size)

python学习之路--属性

评论关闭