Python 3.1 快速導覽 - 模組 as 陳述

使用關鍵字 (keyword) importfrom 引入模組 (module) 時,可以和另一個關鍵字 as 連用,可於程式中將模組或模組中的名稱改成其他名稱,以避免名稱衝突。



例如有以下模組
class Demo:
    __x = 0

    def __init__(self, i):
        self.__i = i
        Demo.__x += 1
    
    def __str__(self):
        return str(self.__i)
         
    def hello(self):
        print("hello " + self.__str__())
    
    @classmethod 
    def getX(cls):
        return cls.__x

class Other:
    def __init__(self, k):
        self.k = k

    def __str__(self):
        return str(self.k)

    def hello(self):
        print("hello, world")
    
    def bye(self):
        print("Good-bye!", self.__str__())

class SubDemo(Demo, Other):
    def __init__(self, i, j):
        super().__init__(i)
        self.__j = j
    
    def __str__(self):
        return super().__str__() + "+" + str(self.__j)

if __name__ == "__main__":
    a = SubDemo(12, 34)
    a.hello()
    a.bye()
    b = SubDemo(56, 78)
    b.hello()
    b.bye()

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:cla22.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月


我們用另一個程式引入 cla22.py
import cla22 as test

a = test.SubDemo(12, 34)
a.hello()
a.bye()
b = test.SubDemo(56, 78)
b.hello()
b.bye()

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:mod04.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行結果如下



以上程式原本模組名稱為 cla22 ,我們利用 as ,引入 cla22 後將名稱改為 test ,因此程式內使用原本在 cla22 中的 SubDemo 就得接在 test 後面。


加入 from 就可以更簡化,例如
from cla22 import SubDemo as test

a = test(12, 34)
a.hello()
a.bye()
b = test(56, 78)
b.hello()
b.bye()

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:mod05.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行結果如下



中英文術語對照
關鍵字keyword
模組module






2 則留言:

Unknown 提到...

最前面筆誤"可以和另一個關鍵字 from 連用"
為"可以和另一個關鍵字 as 連用"

Kaiching Chang 提到...

這邊打錯字了,已修改,感謝指正 ^_^