好吧,所以如果你有一個類實例分配給'Bill',我明白你不能只用'karl = bill'來使'karl'成爲一個獨立的實例,其參數與bill相同。對於以下類:一種自動化類變量複製的方法?
class person():
def __init__(self,x=5,y=1,z=0):
self.x = x
self.y = y
self.z= z
bill = person()
顯然卡爾=法案,只是讓「卡爾」指針「法案」,所以「卡爾」所做的任何更改實際的變化法案提出。只有3個變量,通過karl = person(bill.x,bill.y,bill.z) 的方法複製karl並不重要。然而,當您添加類變量/參數時,這會變得越來越單調乏味。 haircolor,hairlenth,眼睛的顏色,等等。例如,組成一個人的所有屬性。
有沒有辦法簡化/自動克隆一個類的實例? python沒有保留一個類的參數的迭代列表,所以你可以做一些像 「在bill._args中的n:」或者什麼?
或者這不是開發具有大量變量的類的最佳方式嗎?
你有沒有聽說過[複製](https://docs.python.org/2 /library/copy.html#copy.copy)和[deepcopy](https://docs.python.org/2/library/copy.html#copy.deepcopy)? – alfasin
要查看對象的內容,請嘗試使用'bill .__ dict__'如果對象具有您不想共享的列表或字典,請使用'deepcopy'而不是'copy'。 – Alexander
不過要注意, 「copy.copy」和「copy.deepcopy」都不是複製對象的正確方法,如果某些東西應該被共享,有些不應該被複制,或者複製只需要深入到具體深度。例如,如果你想複製一個樹狀迭代器來跟蹤它的位置和一堆節點,你會想複製堆棧,但不是節點。 'copy.copy(迭代器)'和'copy.deepcopy(迭代器)'都不會這樣做。這可以通過定製'copy'和'deepcopy'如何處理你的對象來處理。 – user2357112