我最近正在研究一個小小的python項目,並且遇到了我想將self
傳遞給另一個對象的構造函數的情況。我不知道爲什麼,但我不得不查看這是否合法在python中。我在C++和Java中做了很多次,但我不記得曾經用python做過這些事情。把自己傳入python的構造函數中
正在將對self
的引用傳遞給新對象不被考慮的東西pythonic?我不認爲我見過任何顯式傳遞自引用的python程序。到目前爲止,我是不是有需要?或者我是在fighting py Python風格?
我最近正在研究一個小小的python項目,並且遇到了我想將self
傳遞給另一個對象的構造函數的情況。我不知道爲什麼,但我不得不查看這是否合法在python中。我在C++和Java中做了很多次,但我不記得曾經用python做過這些事情。把自己傳入python的構造函數中
正在將對self
的引用傳遞給新對象不被考慮的東西pythonic?我不認爲我見過任何顯式傳遞自引用的python程序。到目前爲止,我是不是有需要?或者我是在fighting py Python風格?
是的,它是合法的,是的它是pythonic。
我發現自己使用這種模式,當你有一個對象和容器對象,其中包含的對象需要知道他們的父母。
只要通過它就像一個參數。當然,它不會被稱爲在其他初始化self
...
class A:
def __init__(self, num, target):
self.num = num
self.target = target
class B:
def __init__(self, num):
self.a = A(num, self)
a = A(1)
b = B(2)
print b.a.num # prints 2
我想這或多或少會問_pythonic_,而不是如何。 – alternative 2010-10-15 20:48:00
嗯,幾件事情是unpythonic *本身*,它只是有*通常*更好的方法(無論是在設計還是實施水平)。您的問題沒有提出問題,因此我們無法判斷您的解決方案是否有用。 – delnan 2010-10-15 20:38:58
現在我想到了,我必須同意,這在Python中沒有像在例如Java的。不知道爲什麼。 – 2010-10-15 20:39:36
我不知道爲什麼人們堅持要說「pythonic」時,他們只是表示「乾淨」,但這並不存在固有的錯誤。只要注意循環引用和'__del__'。 – 2010-10-15 21:07:22