2010-09-08 21 views
1

你自己的句柄在OOP語言中被稱爲不同的東西。少數我遇到迄今:不同的方式來引用你自己?

  • this(例如,Java,C#)
  • Me(如VB,VBA)
  • self(如Python)的

任何人都知道任何其他?

回答

3

在Python中,這只是一個約定,第零個參數被稱爲self。重要的是這個位置。什麼東西都可以做,所以你可以使用i或其他任何東西:

class Foo: 
    def bar (i): 
    print i 
+0

有趣!我沒有意識到 – curious 2010-09-08 17:32:19

+3

請原諒,但「零」真的磨削我的齒輪。英文中的第一個序數是「第一」。如果我們允許「第零」,那麼你稱之爲「第一」的項目實際上是第二個,而這只是令人困惑。這意味着,當麥當娜談到「第一次感動」時,她並不是指她失去童貞的時候。這首歌必須是「幾乎像一個處女」,而這只是沒有正確的節奏。 – 2010-09-09 11:52:49

+0

@P Daddy它來自'zeroth.func(第一,第二,第三等)'調用的方法,以及一個名爲func(第一,第二,第三等)的自由函數 - 第一個參數是通常是第一個在調用列表內部被調用的內部,第0個是第一個參數之前的那個。由於沒有關鍵字,Python通過將第零個參數作爲定義中的第一個參數,而不是在呼叫站點,來混淆約定。 – 2010-09-09 19:45:33

1

自我搜索...

多數情況下這是什麼都沒有。例如,如果不存在本地x變量,通常「x」將引用this.x。

1

在Perl中,對其本身的引用永遠不會隱含。

sub work { 
    my($self) = @_; 
    sleep();   # Don't do this 
    $self->sleep(); # Correct usage 
} 

來源: 「Writing serious Perl - The absolute minimum you need to know

+1

儘管按照慣例,大多數perl程序員都將該引用命名爲'$ self'。這只是該方法的第一個參數。 – slebetman 2010-09-08 17:45:17

+0

@slebetman是的,你是對的。我的答案太簡短了。我已經添加了一個說明約定的例子。 – 2010-09-08 18:02:35

0

Smalltalk中也使用自我。

0

F#與Python和Perl類似,只需提供自己的名稱即可。這裏的@Pete Kirkham的的Python的例子在F#:

type Foo = 
    member i.bar = printfn "%O" i 

使用它,像這樣:

let x = new Foo() 
x.bar 
1

在多分派面向對象的語言,如Common Lisp的(CLOS),迪倫或石板,沒有一個統一的接收器對象,因此沒有self的概念。