2014-09-30 47 views
0

重載在Java中,我能夠做出這樣(僞)一類中的方法重載:方法在Python中有兩個以上的功能

public class Test 
private double result; 

Test(){result=0;} 

public double func(int a, int b, int c) 
{ 
    result=a+b+c; 
} 

public double func(int a, int b) 
{ 
    result=a*b; 
} 

public double func(int a) 
{ 
    result=Math.pow(a,2); 
} 

我怎樣才能在Python相同的行爲?我知道我可以使用默認值,但是當我想要在方法中實現不同的操作時遇到了問題。

任何幫助?

+0

你見過這個嗎? http://stackoverflow.com/questions/6434482/python-function-overloading – ComputerFellow 2014-09-30 14:12:39

回答

1

您可以使用相同的功能做到這一點,但隨着數量的參數,你可以決定你想要什麼樣的行動來進行,這樣

class Test: 
    def func(*args): 
     if len(args) == 1: 
      return args[0] * args[0] 
     elif len(args) == 2: 
      return args[1] * args[0] 
     elif len(args) == 3: 
      return sum(args) 
     else: 
      raise "Unexpected number of arguments" 

在Python中,當你定義一個以上的一類函數具有相同的名稱,最後一個函數將覆蓋以前具有相同名稱的函數的定義,因爲函數和類關聯發生得非常晚。

+0

謝謝,但是當我做如果len(args)== 1我得到了錯誤「對象的類型BOOL沒有長度」 – Layla 2014-09-30 14:31:02

+1

@Layla定義函數'func',在'args'之前應該有'*'。我猜你沒有那個... – thefourtheye 2014-09-30 14:31:50