[问题] 用class包装后return不到想要的值

楼主: zxsaqw12 (雷蒙尼)   2018-05-09 11:59:59
目前因为兴趣在自学,基础不是很好。(以前没程式经验)
近期在做爬虫的练习,
有重复赋值的需求,但发现用class包装后,
却只会拿到第一次的结果。
(虽然用别的方法可以解决)
但我自己本身想不通为什么会这样,也不知道该打什么关键字去澄清这个。
所以想请各位前辈帮忙看看我的观念哪里错误了。
程式码如下:
a="a"
b="b"
class TEST():
def __init__(self,test1,test2):
self.test1=test1
self.test2=test2
def test():
test1 = a
test2 = b
return TEST(test1,test2)
test=test()
print (test.test1)
print (test.test2)
a="A"
b="B"
print (test.test1)
print (test.test2)
###Output###
a
b
a
b
############
以上。
结果不是想像中的,
a
b
A
B
是不是我哪里有天大的错误认知阿,
我需要重新复习哪一块呢?
感谢各位。
作者: handsomeLin (DoGLin)   2018-05-09 12:10:00
你建立instance的时候用的是a b两个值,你改原先两个值当然不会造成改动,除非你用的是reference type的东西btw, 其实这跟class一点关系都没有
楼主: zxsaqw12 (雷蒙尼)   2018-05-09 12:13:00
对噎我刚刚发现把test=test()拿掉修改后就没有这个问题
作者: handsomeLin (DoGLin)   2018-05-09 12:17:00
比如说 test1 = ‘a’ a = test1 之后你更动test1的值 a 还是’a’ 你可能要了解一下 = 的意义
楼主: zxsaqw12 (雷蒙尼)   2018-05-09 12:33:00
感谢感谢
作者: justoncetime (台北丛林好冷~)   2018-05-10 10:11:00
“0为阿拉伯数字,O为英文字母”为啥不用Inconsolata之类的字体 ='= (考题范例)抱歉回错了 Orz 必要可以删除

Links booklink

Contact Us: admin [ a t ] ucptt.com