首页 > 其他分享 >类相关函数(反射机制)

类相关函数(反射机制)

时间:2023-03-03 09:36:06浏览次数:37  
标签:__ 反射 函数 self Person print 机制 zs name

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'>

标签:__,反射,函数,self,Person,print,机制,zs,name
From: https://www.cnblogs.com/sibide/p/17174394.html

相关文章

  • 【LeetCode二叉树#16】二叉树的最近公共祖先(递归后序遍历,巩固回溯机制)
    二叉树的最近公共祖先力扣题目链接(opensnewwindow)给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个......
  • Spring Boot SPI 机制探究
    SpringBootSPI机制探究前言SpringBoot带给我们的一大便利是当需要引入一个第三方依赖时,如果其有Starter,可以加入Starter依赖,就可以实现自动装配,这中便利就来自S......
  • 使用qsort函数实现冒泡排序(函数指针的运用)
    //此程序的本质:完全理解qsort函数的传参的原则////实现思路:因为我们是模拟qsort函数//所以我们要自己创造一个:比较数据的函数:cmp_int//因此必须有一个函数指针来接收这......
  • 字符串和字符串函数(二)
    2.字符串输入如果要把一个字符串读入程序,必须先预留存储该字符串的空间,然后用输入函数获取该字符串。2.1分配空间预先分配空间则意味着必须为字符串分配足够使用的空间大小,......
  • UI自动化--下拉框处理和等待机制
    一、下拉框处理:网页上的js弹出框一般有三种情况,且识别不了元素,需要使用switch_to.alert()进行跳转    情况一: 这时候需要先跳转到此弹窗,才能做到自动化点击确定......
  • .Net DI(Dependency Injection)依赖注入机制
    1、简介DI:DependencyInjection,即依赖注入,他是IOC的具体实现。在DI中,底层服务对象不再负责依赖关系的创建,而是交由顶端调用进行管理注入好处:降低组件之间的......
  • KingbaseES函数三态
    理解函数的三态1VOLATILE:volatile函数没有限制,可以修改数据(如执行delete,insert,update),使用同样的参数调用可能返回不同的值.STABLE:不允许修改数据,PG8.0以......
  • jmeter日期时间函数:time函数
     time函数的使用方法:${__time(日期时间格式,自定义变量名)} 年:yyyy或yy  月:MM  日:dd  时:HH(24小时制) hh(12小时制)  分:mm  秒:ss  毫秒:SSS1.......
  • C#--静态函数与非静态函数的区别
    语法区别使用了static修饰符的方法为静态方法,反之为非静态方法,也就是实例方法。在内存中位置的区别静态方法:静态成员属于类所有,可以被各个实例公用,无论创建了多少个......
  • torch&numpy常用函数总结
    np.dot()-向量内积np.matmul()&@运算符-矩阵乘法np.multiply()&*运算符-针对标量的运算(各个维度均可)&np.square()-等价于np.multiply(a,a)链接np.c_()a=n......