关于python动态添加属性和方法的意义

添加属性以后,该属性在原来类里没有,又不能和原来的组合使用,改变原来内部结构,而且一般的属性和方法它只能属于创建它的对象,又不是共有的。通过类创建属性可以共有吗?如果添加... 添加属性以后,该属性在原来类里没有,又不能和原来的组合使用,改变原来内部结构,而且一般的属性和方法它只能属于创建它的对象,又不是共有的。通过类创建属性可以共有吗?
如果添加方法的话,完全可以在方法内部创建该属性。比起这样动态添加,一开始就写入类里,不是更好。我想不通的是:他们的意义在哪,一般什么时候会用到这些。
展开
 我来答
无语至极也
2019-08-05 · TA获得超过368个赞
知道小有建树答主
回答量:94
采纳率:100%
帮助的人:50.3万
展开全部

通过对象的实例,在外部为其添加属性,这种做法应该是很少见的。原因很简单:破坏封装。虽然Python可以做到,但并不代表随意使用这种做法是妥当的。

添加的属性可以和原有的组合使用的,有回答已经给出了例子。

我觉得有必要提一下self或者说方法的第一个参数是什么。

图片可以看出,self其实不像C++或Java中的this。其实它只是个名字,是个参数。你完全可以取任何合法的变量名。当然,不建议使用self以外的变量名。

其次,self实际上就是实例的引用,和实例化并赋值到t的对象是同一个。这一定程度上可以解释为什么外部可以为实例创建属性。因为在__init__方法中通过self创建属性(self.val = 0)和通过外部引用创建属性(t.val = 0)没有本质区别。

至于“通过类创建属性”,这种做法是可以达到共有的:

需要注意的是,通过实例为类属性赋值[7],会“遮盖”类属性。即,赋值只是为实例的属性赋值,而未改动类的属性。需要改动类属性的话,应该使用类名的方式。

感兴趣的话可以查查Python的Mixin,这是通过动态继承添加属性和方法的做法。

hy1397471
2019-07-25 · 知道合伙人软件行家
hy1397471
知道合伙人软件行家
采纳数:4714 获赞数:17155
15年数据库维护及数据库应用系统开发经验,从事零售业、服务业及财务管理类系统开发与维护。

向TA提问 私信TA
展开全部

比如这样一个例子:学生资料。

班长只有一个,那么班长的手机号码,只是班长这个对象有这个属性。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AAA软件教育
2019-08-05 · IT职业教育领导品牌
AAA软件教育
AAA软件教育隶属于河南梦工厂教育信息咨询有限公司,从事高端计算机职业教育工作,是国内知名的教育品牌。自07年创建以来,依托先进的办学理念,AAA培养出了数万名专业型、实战型高端技术人才。
向TA提问
展开全部
python是当下十分火爆的编程语言,尤其在人工智能应用方面。如果有心从事编程方向的工作,最好到专业机构深入学习、多实践,更贴近市场,这样更有利于将来的发展。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式