getattr,getATtribute ie8和ie11

http://www.itjxue.com  2023-01-17 08:29  来源:未知  点击次数: 

python中的getattr(object,name)和object.name有什么区别?

正常情况下没有什么区别

但是如果name不是object的属性,那么区别就显示出来了.

如果直接访问一个不存在的属性,那么将会抛出AttributeError异常

而是用getattr则可以返回一个默认值

例如

getattr(obj,'sss','emtry')

如果obj存在sss属性,则返回相关的值,否则默认返回一个'emtry'.

linux getattr函数什么意思

getattr(obj,"property_name or method_name")

可以动态的获取一个对象的属性和方法.

比如,一个命令处理类有很多方法 do_create do_destroy do_list do_start do_stop,

那么就可以这样写

def exec(self,command,args):

if hasattr(self,"do_"+command):

func=getattr(self,"do_"+command)

return func(args)

这样你只要添加这个类的方法,就能直接扩充该类所支持的命令了(python内置的一个命令行解释器模块就是用的这个方式。)

python __getattr__和__setattr__应该怎么理解

__getattr__为内置方法,当使用点号获取实例属性时,如果属性不存在就自动调用__getattr__方法

__setattr__当设置类实例属性时自动调用,如j.name=5 就会调用__setattr__方法 self.[name]=5

因为这个类是从dict继承来的,是dict的超类

所以 self[attr]=value 相当于调用dict的下标方法

与 a={} ; a[attr]=value意思一样

python getattribute、get、getattr、getitem等用法

__getattribute__

__getattribute__是属性访问拦截器,就是当类的属性被访问时,会自动调用类的__getattribute__方法。

参考代码:

代码执行过程中,当调用实例对象attribute的name属性时,不会直接打印,而是把name的值作为实参传进__getattribute__方法中,经过一系列操作后,再把name的值返回。

python中只要定义了继承object的类,就默认存在属性拦截器,只不过是拦截后没有进行任何操作,而是直接返回。

我们可以自己改写__getattribute__方法来实现相关功能,比如查看权限、打印log日志等。

getattr、hasattr、setattr

对象属性的判断。

参考代码:

__getattr__、__setattr__、__delattr__

类支持 . 操作来访问属性;定制功能:耗时、日志等等。

参考代码:

__getitem__、__setitem__、__delitem__

类支持通过[]来访问属性

参考代码:

__get__、__set__、__delete__

参考代码:

参考文档:

VB中,使用getattr函数的问题

返回一个 Integer,此为一个文件、目录、或文件夹的属性。

语法

GetAttr(pathname)

必要的 pathname 参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。

返回值

由 GetAttr 返回的值,是下面这些属性值的总和:

常数值描述

vbNormal0常规

vbReadOnly1只读

vbHidden2隐藏

vbSystem4系统文件

vbDirectory16目录或文件夹

vbArchive32上次备份以后,文件已经改变

vbalias64指定的文件名是别名。

注意 这些常数是由 VBA 指定的,在程序代码中的任何位置,可以使用这些常数来替换真正的值。

说明

若要判断是否设置了某个属性,在 GetAttr 函数与想要得知的属性值之间使用 And 运算符与逐位比较。如果所得的结果不为零,则表示设置了这个属性值。例如,在下面的 And 表达式中,如果档案 (Archive) 属性没有设置,则返回值为零:

Result = GetAttr(FName) And vbArchive

如果文件的档案属性已设置,则返回非零的数值。

(责任编辑:IT教学网)

更多

相关word文章

推荐word文章