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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值