在 Python 中为对象添加属性

这篇具有很好参考价值的文章主要介绍了在 Python 中为对象添加属性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们将介绍如何在 Python 中为对象添加属性。 我们还将通过示例介绍如何在 Python 中更改对象的属性。


在 Python 中为对象添加属性

在 Python 中,我们时常使用对象,因为 Python 是一种面向对象的语言。 对象使我们的代码可重用并易于实现复杂的结构。

对象的主要部分是它们的属性。 属性定义某个对象的属性是什么。

在处理对象时,可能有很多情况我们需要在程序中间向对象添加新属性。

Python 提供了一个函数 setattr() 可以方便地设置一个对象的新属性。 这个函数甚至可以替换属性的值。

它是一个函数,借助它我们可以分配对象属性的值。

该方法将为我们提供多种方法,通过某些构造函数和对象函数为变量分配值。 通过使用这个功能,我们也将能够有其他替代的方式来赋值。

现在,让我们讨论一下这个 setattr() 函数的结构。 构造 setattr() 的结构如下所示。

# python
setattr(object, name, value)

从这个函数的语法中可以看出,我们将三个参数传递给函数,然后它将允许我们设置对象的属性。

共有三个参数,说明如下:

  • object - 我们将传递我们创建的对象的名称,并希望为其设置属性。
  • name - 这将是我们要为其分配值的对象的属性名称。
  • value - 我们将在此处传递属性值。

让我们来看一个例子,在这个例子中我们将创建一个 Students 类。 我们将创建一个新学生并为其分配一些属性,如下所示。

# python
class Students():
    name = "Rana Hasnain"
    roll_no = "BC140402269"
    cgpa = 3.5

new_student = Students()
setattr(new_student, 'name', 'James Bond')
setattr(new_student, 'roll_no', '007')
setattr(new_student, 'cgpa', 4)

print("New Student Name:",new_student.name)
print("New Student Roll #:",new_student.roll_no)
print("New Student Cgpa:",new_student.cgpa)

输出:

在 Python 中为对象添加属性

从上面的示例中可以看出,设置我们创建的对象的属性非常容易。 现在,让我们讨论一个不同的场景。

假设我们有一个新对象并且想要设置类中缺少的属性。

在某些情况下,没有属性,或者所有属性都不是在一个类中创建的。 发生这种情况时,我们分配一个新属性并可以为其设置一个值。

但要实现它,对象应该实现 __dict__() 方法。 让我们通过一个例子,尝试为一个不存在的属性赋值。

我们将使用上面的示例并尝试分配一个新属性 degree,如下所示。

# python
class Students():
    name = "Rana Hasnain"
    roll_no = "BC140402269"
    cgpa = 3.5

new_student = Students()
setattr(new_student, 'name', 'James Bond')
setattr(new_student, 'roll_no', '007')
setattr(new_student, 'cgpa', 4)
setattr(new_student, 'degree', 'BSCS')

print("New Student Name:",new_student.name)
print("New Student Roll #:",new_student.roll_no)
print("New Student Cgpa:",new_student.cgpa)
print("New Student Degree:",new_student.degree)

输出:

在 Python 中为对象添加属性

从上面的例子可以看出,该函数还可以创建不存在的新属性并为其赋值。文章来源地址https://www.toymoban.com/news/detail-475563.html

到了这里,关于在 Python 中为对象添加属性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3向对象中添加属性

    使用场景:后端返回一个数组对象结构,会出现可能需要前端自己向对象中添加一个新的字段   在vue2中我们常常会遇到明明已经改变了数据,视图却没有实时更新这样的问题 这时vue2就提供了一个方法就是$set 但是在  vue3  中,$set 被废除了,vue3中的数据响应式是用的  ES

    2024年02月13日
    浏览(39)
  • 【JS】js给对象动态添加、设置、删除属性名和属性值

    js中访问对象属性一共有两种方法:点获取法和方括号获取法。 使用点符号访问属性值 alert( user.name ); // John 使用方括号访问属性值 alert( user[name]); // John 注意: 如果我们遍历一个对象,我们获取属性的顺序是和属性添加时的顺序相同吗? 简短的回答是:“有特别的顺序”:整

    2023年04月13日
    浏览(44)
  • js在数组对象中添加和删除键值对(对象属性)的方法

    添加 1.Object.assign():用法-Object.assign(源对象, {要添加的键值对}) 2.拓展运算符(...):用于取出参数对象所有可遍历属性然后拷贝到当前对象 3.object[key] = value:直接给新的key赋值 删除 1.将属性设置为 undefined:属性本身仍将存在于对象中,它还会改变原始对象。 2.使用 delete 操

    2024年02月14日
    浏览(50)
  • uniapp小程序:追加数组中的对象属性,属性数据已经添加,视图不会改变

    场景复现: 由于业务需要,需要给数组中的每一个对象添加一个ischecked属性(Boolean)来控制复选框的选中状态,于是: 注意:buycargoodslists为数据源,初始数据源没有定义isChecked属性 结果可想而知,在控制台查看操作后的数据源buycargoodslists:确实属性isCheck已经插进去了,但

    2024年02月12日
    浏览(36)
  • Vue2中给对象添加新属性界面不刷新

    Vue2.x的响应式 实现原理 对象类型:通过 Object.defineProperty() 对属性的读取、修改进行拦截(数据劫持)。 数组类型:通过重写更新数组的一系列方法来实现拦截。(对数组的变更方法进行了包裹)。 存在问题 新增 属性、 删除 属性, 界面不会更新。 直接通过 下标修改 数组

    2024年02月07日
    浏览(37)
  • Flutter中为控件添加交互

    stateful widget 是动态的. 用户可以和其交互 (例如输入一个表单、 或者移动一个slider滑块),或者可以随时间改变 (也许是数据改变导致的UI更新). Checkbox, Radio, Slider, InkWell, Form, and TextField 都是 stateful widgets, 他们都是 StatefulWidget的子类。 2.创建一个有状态的widget 要创建一个自定义

    2024年04月15日
    浏览(39)
  • Flutter中为控件添加交互(2)

    有多种方法可以管理状态,用户可以选择使用何种管理方法,一般而言就在父widget中管理状态。 1.widget管理自己的state 有些情况下widget在内部管理其状态是最好的。例如, 当ListView的内容超过渲染框时, ListView自动滚动。大多数使用ListView的开发人员不想管理ListView的滚动行为

    2024年04月12日
    浏览(36)
  • Flutter中为控件添加交互(3)

    @override _FavoriteWidgetState createState() = new _FavoriteWidgetState(); } step3: 创建State子类 自定义State类存储可变信息 - 可以在widget的生命周期内改变逻辑和内部状态。 当应用第一次启动时,用户界面显示一个红色实心的星星形图标,表明该湖已经被收藏,并有41个“喜欢”。状态对象存

    2024年04月17日
    浏览(36)
  • 【项目实践-04】实验室移动端:对象添加新属性+webview IOS端appendJsFile()方法不生效

    一、vue2对象添加新属性         在做实验室移动端时有这样一个需求,即获取下级页面的数据 (toChooseDevice()),为当前页面中的form表单数据添加新的属性和值,然后表单完成后进行提交(submitForm())操作 遇到问题 :在获取下级页面数据为form赋值时,如果使用 this.form[str] =

    2024年02月22日
    浏览(36)
  • Flutter中为控件添加交互,带你一起探究Android事件分发机制

    ), ); } } 代码运行效果如图: 2.父widget管理widget的状态 对于父widget来说,管理状态并告诉其子widget何时更新通常是最有意义的。 例如,IconButton允许您将图标视为可点按的按钮。 IconButton是一个无状态的小部件,因为我们认为父widget需要知道该按钮是否被点击来采取相应的处理

    2024年04月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包