python学习之路--属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习之路--属性相关的知识,希望对你有一定的参考价值。
本篇文章主要是分享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学习之路--属性的主要内容,如果未能解决你的问题,请参考以下文章