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
總結
以上是生活随笔為你收集整理的python实例化对象是什么意思_请帮我理解python对象的实例化.的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos怎么查看服务是否是开机启动如
- 下一篇: python最大值_Python 获取最