python属性与方法,python类的内置属性
本文主要介绍python中的属性管理机制,包括私有属性和属性限制__slots__方法。还详细介绍了如何在python中声明变量的知识。有需要的可以参考一下。
00-1010一、私有属性二。属性限制-__slots__方法III。如何在python IV中声明变量?python中的相关属性
目录
Python并不是真的支持私有化,但是通过下划线可以伪私有化。有一个大多数Python代码都遵循的习惯:带下划线的前缀的名字应该被视为非公共API的一部分(无论是函数、方法还是数据成员)。在Python中,private并不是真正的private,而是在保存属性时更改了名称,不能直接对外使用私有属性具体表现为:。
_参数名3360声明性私有属性_ _参数名3360 _类名私有属性名classattributes 3360
属性=100
#声明性私有属性
_attr2=999
# _类名私有属性名
__attr3=888
打印(属性.属性)
打印(属性。_attr2)
双下划线私有属性在调用时没有属性名__attr3。使用dict attribute检查属性字典:
您可以看到带双下划线的私有属性是:_ class name私有属性名称
一、私有属性
定义插槽属性来限制类实例的属性。只能绑定插槽指定的属性,不能添加插槽以外的属性。添加除插槽之外的属性将直接向classdemo3360报告错误。
使用__slots__限制对象的属性,只能添加指定的属性名称、年龄。
__slots__=[姓名,年龄]
m=演示()
m.name=111
男性年龄=18岁
打印(姓名,年龄)
添加指定属性以外的属性。
m .性别=男性
执行结果:
错误:属性错误:“演示”对象没有属性“性别”
二、属性限制-__slots__方法
语法:参数,属性类型
例如:a: int=[11,22,3]参数A,类型为int,值为[11,22,3]
Python可以声明变量或参数的类型,但实际上代码执行不会检查类型。
A: int=python #被设置为int类型,但传递的值是字符串类型。
B: str=11 #设置为字符串类型,但传递的值是int类型。
C: list={11,22,33} #设置为列表,但传递的值是字典。
Print (A,B,C) #=======还可以打印。
#函数参数的类型声明:
Work(名字: str,年龄: int) 3360 #设置为string类型和int类型。
打印(名称是的名称值,名称)
打印(年龄的年龄值为,年龄)
#实际上传递一个列表和一个字典。
工作([11,22,33],{a:1, b:2})
执行结果:
三、python中如何去声明变量
__getattr__方法3360
用法:获取属性,属性不存在时触发的方法。
特殊过程:获取属性时,先执行__getattribute__看看有没有属性,然后返回。如果不是,执行__getattr__方法,返回的属性不存在。
strong>getattribute(self, item):
用法:属性访问触发的魔术方法,查找属性时,第一时间会调用该方法
setattr(self, key, value):
用法:设置属性的方法,设置属性时,调用该方法设置属性
__delattr__方法:
用法:在del 删除属性时触发,删除属性的方法
class MyDemo(object):def __getattribute__(self, item):
"""
属性访问触发的魔术方法
:param item: 获取的属性名
:return: 获取到的属性值
"""
print("您要获取的属性为:", item)
value = super().__getattribute__(item) # 继承父类
return value
def __setattr__(self, key, value):
"""
设置属性的方法
:param key:属性名
:param value: 属性值
:return:
"""
print("您要设置的属性名{},属性值为:{}".format(key, value))
super().__setattr__(key, value)
def __delattr__(self, item):
"""
删除属性的方法
:param item: 属性名
:return:
"""
print("您要删除的属性为:", item)
super().__delattr__(item)
def __getattr__(self, item):
"""
获取属性,属性不存在时触发的方法
:param item:
:return:
"""
print("获取的属性{},不存在".format(item))
return 99
m = MyDemo()
print("************************* 属性设置 ******************************")
# 属性设置
# 设置属性方式一:
m.aa = 999
m.name = musen
# 设置属性方式二:setattr方法:
setattr(MyDemo(), age, 18)
print("************************ 获取属性 *******************************")
# 获取属性
# 方式一:
print(m.aa)
print(m.name)
# 方式二:getattr 方法
print(getattr(m,name))
print("************************ 删除属性 ********************************")
# 删除属性
# 方式一:
del m.aa
# 方式二:delattr 方法
delattr(m, age)
到此这篇关于python中的属性管理机制的文章就介绍到这了,更多相关python属性管理内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。