Fine语言模块加载

# 在实际编程中,稍微复杂一点的程序,通常不会只写一个文件,

# 而是按功能分成不同的模块,在主程序中,可以加载这些模块


# 加载模块有两种方法:

# 一种方法是直接加载整个模块,好处是函数名不会冲突,但是效率稍低

# 另一种方法是只加载模块中的部分函数、或类,但是,要避免函数名冲突



# 例程1  import加载模块

# 该方法加载的模块内部的函数(或类),

# 如果与主程序重名,不影响双方各自使用。

# 有一个文件名为:".\\fin\\bb.fin"的源文件

# 内含一个类AA,和两个函数iadd()、imut()

class AA(object)

{

   v1

   v2

   def add(self)

   {

      return self.v1 + self.v2

   }


   def show(self,x)

   {

      print("x = %\n",x)

   }

}


def iadd(x,y)

{

   return x+y

}


def imut(x,y)

{

   return x*y

}


# 首先对上述文件bb.fin进行编译,生成bb.fie文件,保存在与源文件相同的目录中


/*******************************************************/


# 主程序为:".\\fin\\aa.fin"


# 在主程序中,加载模块 bb

import ".\\fin\\bb"  #这里文件名不带扩展名


# 定义一个类AA的成员,参数分别为:v1 = 3,v2 = 4

a = bb.AA(3,4)  #类生成器AA,属于模块bb


print("%    %\n",a.v1,a.v2)  #打印出成员a的参数


a.show(a.add())   #利用类对象的方法show(),来显示类对象的方法add()的结果


print("\n")

print("\n")


c = bb.iadd(1,2)  #调用模块bb中的iadd()函数

print("bb.iadd(1,2) = %\n",c)    #打印调用iadd()的结果


print("bb.imut(3,4) = %\n",bb.imut(3,4))  #在打印函数中,直接调用模块bb中的函数imut()




# 例程2   from  mod  import func1,func2, ...  加载模块内部的函数


# 此方法加载的模块内的函数,如果与主程序定义的函数名重名,

# 将发生冲突,后者将覆盖前者。


# 仍然用例程1中的模块 bb


# 对主程序 ".\\fin\\aa.fin",做如下修改:


from ".\\fin\\bb" import AA,iadd,imut  # 从模块 bb 中,加载类AA,和两个函数


# 由于类AA已经被直接加载到主程序中,

# 因此,可以直接调用,不需要使用 bb.AA(5,6)


a = AA(5,6)  


a.show(a.v1)

a.show(a.add())


print("\n")

print("\n")


# 同样,可以直接调用函数iadd()和imut()


c = iadd(1,2)

print("%\n",c)

print("%\n",imut(3,4))

0