[問題] setattr修改屬性值
各位版友好:
如果我有一個
class Line:
def __init__(self,p1,p2):
self.p1 = p1
self.p2 = p2
self.display = self.p1.display+" "+self.p2.display
def __setattr__(self, name, value):
if not name in self.__dict__:
self.__dict__[name] = value
elif name == 'p1' or name == 'p2':
self.name = value
self.display = self.p1.display+" "+self.p2.display
我想要當修改到p1或p2的時候(ex:self.p1=new_p1),就會同時修改到display
所以就加了__setattr__
但是很奇怪的是
例如我用
self.p1=Point1
他的確有呼叫__setattr__,也有執行self.name=value
但是呼叫完之後我的p1還是沒有被修改到
請問這是為什麼呢?
謝謝
--
~宅男的四個徵兆~
∠□ ○ ! * \○/ ★ (○ ?
╦╦└□ " ○□═ □ □>
║║√√ ╦══╦ ∥ |\
一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.47.143.204
※ 編輯: Arim 來自: 114.47.143.204 (10/07 14:55)
改成self.__dict__[name]=value就可以了XD
不知道還有沒有更好的方法?
※ 編輯: Arim 來自: 114.47.143.204 (10/07 15:35)
※ 編輯: Arim 來自: 114.47.143.204 (10/07 15:35)
→
10/07 15:36, , 1F
10/07 15:36, 1F
→
10/07 15:36, , 2F
10/07 15:36, 2F
我一開始以為name會自動代換成p1或p2 = =
不過setattr真的滿好用的XD
推
10/07 17:23, , 3F
10/07 17:23, 3F
※ 編輯: Arim 來自: 114.47.143.204 (10/07 21:09)
※ 編輯: Arim 來自: 114.47.143.204 (10/07 21:11)
推
10/08 17:07, , 4F
10/08 17:07, 4F
→
10/08 17:08, , 5F
10/08 17:08, 5F
把p1跟p2的結果用一個方法得出是甚麼意思?
※ 編輯: Arim 來自: 36.238.83.249 (10/10 22:10)
Python 近期熱門文章
PTT數位生活區 即時熱門文章