百木园-与人分享,
就是让自己快乐。

类相关函数(反射机制)

6.5 类相关函数(反射机制)

在 Python 中使用反射可以得到对象的属性,即:反过来让对象告诉我们他的相关信息是什么,用于实现在运行时获取对象的相关信息。
Python中有几个内置方法,可以用来检查或是访问对象的属性。这些方法可以用于任意对象。

6.5.1 dir([obj])

描述
不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。
示例:
>>> dir(input)
[\'call\', \'class\', \'delattr\', \'dir\', \'doc\', \'eq\', \'format\', \'ge\', \'getattribute\', \'gt\', \'hash\', \'init\', \'init_subclass\', \'le\', \'lt\', \'module\', \'name\', \'ne\', \'new\', \'qualname\', \'reduce\', \'reduce_ex\', \'repr\', \'self\', \'setattr\', \'sizeof\', \'str\', \'subclasshook\', \'text_signature\']

6.5.2 hasattr(obj, name)、getattr(obj, name):

描述
这2个函数的实参都是一个对象和一个字符串。如果字符串是对象的属性之一的名称,则返回 True(获取),否则返回 False(报错)。
示例:

class Person:
    age = 18

    def __init__(self):
        self.name = \'张三\'


zs = Person()
print(hasattr(zs, \'name\'))
print(hasattr(zs, \'age\'))
print(hasattr(zs, \'gender\'))

print(getattr(zs, \'name\'))
print(getattr(zs, \'age\'))
print(getattr(zs, \'gender\'))

True
True
False
张三
18
Traceback (most recent call last):
File \"E:\\BaiduNetdiskWorkspace\\FrbPythonFiles\\study\\面向对象\\属性.py\", line 15, in
print(getattr(zs, \'gender\'))
AttributeError: \'Person\' object has no attribute \'gender\'

6.5.3 setattr(obj, name, val):

描述
本函数与 getattr() 相对应。其参数为一个对象、一个字符串和一个任意值。字符串可以为某现有属性的名称,或为新属性。只要对象允许,函数会将值赋给属性。如 setattr(x, \'foobar\', 123) 等价于 x.foobar = 123。
注解:由于私有名称混合发生在编译时,因此必须手动混合私有属性(以两个下划线打头的属性)名称以便使用 setattr() 来设置它。
示例:

class Person:
    age = 18

    def __init__(self):
        self.name = \'张三\'
        self.__gender = \'男\'


zs = Person()

setattr(zs, \'name\', \'李四\')
setattr(zs, \'__gender\', \'女\')
print(zs.name)
print(zs._Person__gender)
setattr(zs, \'_Person__gender\', \'女\')
print(zs._Person__gender)

李四

6.5.4 delattr(obj, name)

描述
delattr函数实参是一个对象和一个字符串。该字符串必须是对象的某个属性。如果对象允许,该函数将删除指定的属性。例如 delattr(x, \'foobar\') 等价于 del x.foobar 。
示例

class Person:
    age = 18

    def __init__(self):
        self.name = \'张三\'
        self.__gender = \'男\'


zs = Person()

print(hasattr(zs, \'name\'))
delattr(zs, \'name\')
print(hasattr(zs, \'name\'))

True
False

6.5.5 type(obj)

描述
type函数用来返回指定对象的类型。
示例

class Person:

    def __init__(self):
        self.name = \'张三\'


zs = Person()

print(type(1))
print(type(zs))
print(type(Person))

<class \'int\'>
<class \'main.Person\'>
<class \'type\'>

从自动化办公到智能化办公


来源:https://www.cnblogs.com/sibide/p/17174394.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 类相关函数(反射机制)

相关推荐

  • 暂无文章