我是php編碼器,試圖進入Python世界,對我來說非常困難。對象中的PHP和Python靜態方法,兩個不同的世界......?
在php中最大的享受靜態方法是實例的自動構建器。無需申報的對象,如果你需要它一次,在每一個文件(或具有不同的構造函數參數,可以在一行中)
<?php
class Foo {
function __constructor__(){
$this->var = 'blah';
}
public static function aStaticMethod() {
return $this->var;
}
}
echo Foo::aStaticMethod();
?>
我們可以從靜態方法調用構造函數不是嗎?我們可以在類中訪問所有的東西,因爲它會是一個簡單的方法...我們甚至可以在php類中使用STATIC CONSTRUCTOR,並像下面這樣調用它:Object :: construct() - > myMethod(); (每次通過不同的參數)
但不是在python中? @staticmethod在類中的方法一個簡單的函數,看不到任何東西??
class socket(object):
def __init__(self):
self.oclass = otherclass()
print 'test' # does this constructor called at all when calling static method??
@staticmethod
def ping():
return self.oclass.send('PING') # i can't access anything!!!
print Anidb.ping()
我不能從神該死的靜態方法來訪問任何東西,它就像一個獨立的功能或類似這樣的東西..?
也許我在用錯誤的裝飾器?也許有像php提供的靜態方法在Python中的東西?
1)請說出爲什麼靜態方法是孤立的 2)請告訴我如何使像php靜態方法一樣的行爲。 3)請告訴我這個替代實際用法,如果php靜態方法的行爲是壞事
P.所有這一切的目標是儘可能少寫代碼。 P.p.s讚賞示例代碼的重要評論
謝謝。
你的代碼是不完整的,縮進不正確。你如何在Python中創建你的「靜態」方法? – 2010-11-30 13:54:31
這也是不工作在PHP中,至少不是在PHP> 5.2。但我在早期版本中從未聽說過它。當我運行該腳本時,我得到了「PHP致命錯誤:使用$ this,而不是在對象上下文中」,這是非常有意義的... – enricog 2010-11-30 14:07:28
你的意思是你不能訪問靜態方法在PHP中的非靜態方法? – holms 2010-11-30 14:11:52