python实例化对象是什么意思_请帮我理解python对象的实例化.

我不是程序员,我正在尝试学习python.但我对对象实例化有点困惑.我认为Class就像模板一样,对象是基于模板制作(或实例化).这是否意味着一旦创建了对象(例如,classinst1 = MyClass()),模板中的更改不应该影响对象中的内容?

此外,下面的代码显示我可以更改类变量“common”,但前提是我没有为对象中的“common”变量赋值.如果我在我的对象中指定一个新值“common”(比如classinst1.common = 99),那么更改我的类变量“common”不再影响classinst.common值????

有人可以为我澄清为什么下面的代码表现如此?它是所有OO语言的共同点,还是python的一个古怪方面?

===============

>>> class MyClass(object):

... common = 10

... def __init__(self):

... self.myvar=3

... def myfunction(self,arg1,arg2):

... return self.myvar

...

>>> classinst1 = MyClass()

>>> classinst1.myfunction(1,2)

3

>>> classinst2 = MyClass()

>>> classinst2.common

10

>>> classinst1.common

10

>>> MyClass.common = 50

>>> classinst1.common

50

>>> classinst2.common

50

>>> classinst1.common = 99

>>> classinst2.common

50

>>> classinst1.common

99

>>> MyClass.common = 7000

>>> classinst1.common

99

>>> classinst2.common

7000

解决方法:

您有类声明和实例化的一般概念.但是你的例子中的输出似乎没有意义的原因是实际上有两个变量叫做common.第一个是在类声明中声明并在代码顶部实例化的类变量.这是大多数示例中唯一常见的.

执行此行时:

classinst1.common = 99

您正在创建一个对象变量,classinst1的成员.由于它与类变量具有相同的名称,因此它会隐藏或隐藏MyClass.common.对classinst1.common的所有进一步引用现在引用该对象变量,而对classinst2.common的所有引用继续回退到MyClass.common,因为没有名为common的对象变量是classinst2的成员.

所以当你执行:

MyClass.common = 7000

这会更改MyClass.common但classinst1.common仍然等于99.在您的示例的最后几行中,当您向解释器询问classinst1.common和classinst2.common的值时,前者指的是classinst1对象成员变量常见的后者引用类变量MyClass.common.

标签:python,instantiation

来源: https://codeday.me/bug/20190612/1228849.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

互联网时代供应链

供应链是指围绕核心企业,从配套零件开始,制成中间产品以及最终产品,最后由销售网络把产品送到消费者手中的、将供应商,制造商,分销商直到最终用户连成一个整体的功能网链结构。供应链管理的经营理念是从消费者的角度&a…

win7 计算器 android,教你巧妙应用Win7计算器和时钟

正文最新的Win7是一种个性化设计极强的操作系统,在许多细节方面都做到了人性化设计。其功能的DIY性非常明显,是XP系统远远不能比的。今天我们要说的是Win7计算器和时钟,除了可以计算和时间之外我们还可以让他们有哪些妙用呢?我们左…

python最大值_Python 获取最大值函数|python3教程|python入门|python教程

https://www.xin3721.com/eschool/pythonxin3721/ 以下实例中我们使用max()方法求最大值: # -*- coding: UTF-8 -*- # Filename : test.py # author by : www.w3cschool.cn # 最简单的 print(max(1, 2)) print(max(a, b)) # 也可以对列表和元组使用 print(max([1,2]…

真实经历:整整一年了,他是这样从程序员转型做产品经理的

这是头哥侃码的第224篇原创每年年底,有不少企业都会对一年内辛勤劳作的员工量身定做一些奖项。发个奖杯,给点奖金,让那些没得奖的人看看,咱们公司有多么的关注员工的闪光点,优秀之处。用人所长,容人所短&am…

数据结构—— 基于二叉树的算术表达式求值

实验五 基于二叉树的算术表达式求值 数据结构——中序表达式求值(栈实现) 实验目的: 1.掌握二叉树的二叉链表存储表示和二叉树的遍历等基本算法。 2.掌握根据中缀表达式创建表达式树的算法 3.掌握基于表达式树的表达式求值算法。 实验内容&a…

数字标牌 android,【浩鑫推出全球首款英特尔方案+Android系统数字标牌播放器】PjTime.COM 新品快讯 Intel...

世界知名迷你准系统领导品牌-浩鑫Shuttle,秉承开拓创新,引领行业发展的传统,此次创造性的推出全球首款采用英特尔硬件方案搭载Android系统的NS01A数字标牌播放器,为整个数字标牌行业贡献了全新的硬件解决方案。英特尔方…

python回到本次循环开头_Python中,当一个while循环判断为false,结束这个循环的时候,怎么进入到下一个循环中?...

根据题主对问题的描述,题主需要的答案也许是关于 while 循环结构,Continue 和 Break 的详细解释。了解了循环的控制后,题主便能很清楚地明白自己需要如何控制循环来达到想要的答案了。 先上干货: 1、while循环 如图所示&#xff0…

BCVP开发者说第3期:Adnc

沉静岁月,淡忘流年1项目简介AdncAdnc是一个轻量级的.NetCore微服务快速开发框架,同时也可以应用于单体架构系统的开发。框架基于JWT认证授权、集成了一系列微服务配套组件,代码简洁、易上手、学习成本低、开箱即用。    框架前端基于Vue、…

数据结构——二叉树的非递归算法

二叉树的非递归算法 先序遍历非递归算法1 先序遍历非递归算法2 非递归交换左右孩子算法 使用栈来实现二叉树的非递归算法 栈的基本算法 #include<stdio.h> #include<bits/stdc.h> typedef int Status; #define OK 1 #define ERROR 0 #define TRUE 1 #define …

signature=fc89d4352b6699754c14ce282ec75426,Method for Assembly of Nucleic Acid Sequence Data

摘要&#xff1a;The present invention relates to a method for assembly of nucleic acid sequence data comprising nucleic acid fragment reads into (a) contiguous nucleotide sequence segment(s), comprising the steps of: (a) obtaining a plurality of nucleic ac…

python字符串的表示_Python字符串方法总结

Python字符串方法图示&#xff1a; &#xff08;温馨提示&#xff1a;对图片点右键——在新标签页中打开图片&#xff09;1、index() 定义&#xff1a;查找并返回指定str的索引位置&#xff0c;如果没找到则会抛异常&#xff08;查找的顺序是从左至右&#xff09;可以指定范围&…

Kuma 1.0 GA发布,70多项新功能和改进

喜欢就关注我们吧&#xff01;Kuma 1.0 GA 现已发布&#xff0c;包含了 70 多种新功能和改进。Kuma 是一个现代的通用服务网格控制平面&#xff0c;基于 Envoy 搭建&#xff0c;Envoy 是一个为云原生应用设计的强大的代理软件。Kuma 高效的数据平面和先进的控制平面&#xff0c…

html圆点边框代码,HTML边框代码模板1

都说女人是男人的肋骨蜕变而来&#xff0c;是男人的心肝.可那一朵一朵微微卷起的发梢&#xff0c;点朱唇&#xff0c;纤细白皙的手指&#xff0c;踩着男人心底高跟鞋的我并不是他美丽的天使&#xff0c;往事在耳边环绕&#xff0c;现在的他人在那里&#xff0c;我不闻不问&…

递归函数斐波那契数列python_使用Python函数递归实现斐波那契数列时为什么运行速度很慢?...

你看看你递归代码的复杂度 是O(2^n) 而第二个的复杂度是O(n) 运行效率当然不同 COUNTER 0 def fibn(n): global COUNTER COUNTER 1 if n 0: return 1 elif n 1: return 1 else: return fibn(n-1) fibn(n-2) statistics [] for i in range(35): COUNTER 0 fibn(i 1) sta…

还在犹豫是否迁移.NET5?这几个项目已经上线了!

.NET5正式发布有十多天&#xff0c;博客园、知乎、技术群都讨论的非常热烈。关于项目是否迁移.NET5的话题讨论的尤为热烈&#xff0c;作为.NET十年老司机要告诉你&#xff0c;.NET5的迁移势在必行&#xff0c;当下就是最好的时机&#xff01;犹豫项目是否升级到.NET5的&#xf…

Android切换泰语,Android应用内切换语言

首先扯点别的&#xff1a;这是第一次在简书上写东西&#xff0c;我突然明白为啥这么多人在简书上写东西了&#xff0c;因为没有广告啊&#xff0c;哈哈。最近接触到Android 应用内切换语言的问题&#xff0c;研究了两天&#xff0c;做个记录先。实现了中文&#xff0c;英文&…

工程勘察设计收费标准2002修订版_黑龙江省哈尔滨新区智能轨道快运系统1号线项目勘察设计招标...

黑龙江省哈尔滨新区智能轨道快运系统1号线项目勘察设计第一标段招标公告招标编号&#xff1a;JTZGSJ20200011.招标条件本招标项目黑龙江省哈尔滨新区智能轨道快运系统1号线项目勘察设计已由上级部门批准建设&#xff0c;项目业主为哈尔滨交通集团有限公司&#xff0c;建设资金来…

从 3.1 到 5.0 —— OpenReservation 更新记

OpenReservation 从 asp.net core 3.1 到 5.0IntroOpenReservation 是一个开源的预约系统&#xff0c;最初的版本是我们学校的活动室预约系统&#xff0c;现在正逐步变成一个更为通用的预约系统。.NET5 发布之后也是把这个项目更新到了 5.0。这个项目是一个做了很长时间的项目&…

html如何显示上传进度条,HTML5 Ajax文件上传进度条如何显示

这篇文章主要介绍了HTML5 Ajax文件上传进度条是如何显示的&#xff0c;基于原生html5实现&#xff0c;不需要falsh支持&#xff0c;进度可以自定义显示&#xff0c;控制灵活&#xff0c;对HTML5上传进度条感兴趣的小伙伴们可以参考一下原本打算使用jquery插件进行异步文件上传&…

数据结构——哈弗曼编码问题

实验六 基于哈夫曼树的数据压缩算法 【实验目的】 掌握哈夫曼树的构造算法。掌握哈夫曼编码的构造算法。 【实验内容】 问题描述 输入一串字符,根据给定的字符串中字符出现的频率建立相应的哈夫曼树, 构造哈夫曼编码表,在此基础上可以对压缩文件进行压缩(即编码),同时可以对 压…