python如何超载也许?构造函数

时间:2011-11-10 12:19:31

标签: python

我有这段代码:

class random_walk:
    #ns: number of steps1d
    #np: number of particles
    #dimension : choose between 1D or 2D
    def __init__(self,ns,np,dimension=None):
        self.ns=ns
        self.np=np
        self.dimension=dimension

    def steps1d(self,ns):    
        return 2*sc.random.random_integers(0,1,size=self.ns)-1

    # The position of particles after the n-th steps1d is given from the sum of n first steps1d
    def Walk1d(self,ns):
        return sc.cumsum(random_walk.steps1d(self,self.ns)
.....

当我这样做时:

ns=10000
np=100
dimension=2
rw1=random_walk(ns,np)  # for 1d

rw1为random_walks类创建一个实例,其中ns = 10000。

现在,如果我想这样做:

print('walk1d(10)=',rw1.Walk1d(10)) 

它会给我10000个大小的数组(因为如果我告诉这个权利,它在10000 ns之前创建了一个实例)。 那么,如果我想应用上面的语句来给我10个大小的数组存在什么解决方案呢?

1 个答案:

答案 0 :(得分:1)

def steps1d(self, ns):    
    return 2*sc.random.random_integers(0, 1, size=ns)-1

def Walk1d(self, ns=None):
    if ns is None:
        ns = self.ns
    return sc.cumsum(self.steps1d(ns))