当前位置: 首页 > 面试题库 >

Python类动态属性访问

徐经武
2023-03-14
问题内容

我想通过带有名称的字符串访问类属性。

就像是:

class a:
    b=[]

c='b'
eval('a.'+c+'=1')

但这在Python中不起作用。我怎样才能做到这一点?


问题答案:

用途setattr

In [1]: class a:
   ...:     b = []
   ...:

In [2]: setattr(a, 'b', 1)

In [3]: a.b
Out[3]: 1

getattr反向使用:

In [4]: getattr(a, 'b')
Out[4]: 1

In [5]: getattr(a, 'x', 'default')
Out[5]: 'default'

但是,我非常怀疑,有什么更好的方法可以实现您的目标。您是否尝试过使用字典而不是课堂?



 类似资料:
  • 问题内容: 假设我创建了一个类的实例,并想为其公共属性分配一些值。通常,这将是这样完成的: 但是,如果编写一个将类作为参数的函数,而我想动态地为该类的公共属性分配一些值,那就是通过变量和循环(不知道有多少个或被称为什么)。 ) 显而易见的是: 但这是行不通的。 有任何想法吗? 问题答案:

  • 问题内容: 我有一个Python类,其属性名为:date1,date2,date3等。 在运行时,我有一个变量i,它是一个整数。 我想要做的是基于i的值在运行时访问适当的date属性。 例如, 如果i == 1,我想访问myobject.date1 如果i == 2,我想访问myobject.date2 我想为类而不是属性做类似的事情。 例如,我有一堆类:MyClass1,MyClass2,MyC

  • 问题内容: 目标是创建一个行为类似db结果集的模拟类。 因此,例如,如果数据库查询使用表达式返回,那么我想看看: 刚开始我以为我可以这样做: 但返回一个属性对象。 用替换该行根本没有用。 那么在运行时创建实例属性的正确方法是什么? 问题答案: 我想我应该扩大这个答案,因为我年纪大一些并且比较聪明,并且知道发生了什么事。迟到总比不到好。 你可以动态地向类添加属性。但这很重要:你必须将其添加到类中。

  • 问题内容: 我有一个像下面这样的课程: 我想为源变量传递一个字符串,并访问同名的类成员。 我已经尝试过仅对函数有效(据我所知)以及具有extend和using ,但这也不起作用。做这个的最好方式是什么? 问题答案: 如果命名self的ANY属性(包括您的示例中的),将可以完美地工作。

  • 问题内容: 我有一个带有 伪 属性或 特殊 属性的对象,该属性可以用三种不同的方式命名(注意:我不控制生成该对象的代码) 属性中的值(取决于设置的是哪个)完全相同,我需要获取该值以进行进一步处理,因此根据数据源,我可以得到类似以下内容的值: 要么 要么 我对获取感兴趣,但不幸的是,该对象中不存在属性。因此,我为获得该价值而结束的工作只是打了一堆电话。假设可能性只有三种,则代码如下所示: 现在,我想

  • 我正在尝试使用动态名称访问对象的属性。这可能吗?

  • 怎么可以让这个 self.logger 属于子类(不是直接添加到子类属性这种方式),并且可以运行

  • 本文向大家介绍详解Python中的动态属性和特性,包括了详解Python中的动态属性和特性的使用技巧和注意事项,需要的朋友参考一下 导语:本文章记录了本人在学习Python基础之元编程篇的重点知识及个人心得,打算入门Python的朋友们可以来一起学习并交流。 一、利用动态属性处理JSON数据源 属性:在Python中,数据的属性和处理数据的方法统称属性。 元编程:用元类进行编程,元类→类→对象,元