簡體   English   中英

如何啟動Python腳本中的幾個功能

[英]How to start a Python script several functions in

我有一個Python腳本,我想在腳本中將其稱為幾個功能。 下面的示例代碼:

class Name():

    def __init__(self):
        self.name = 'John'
        self.address = 'Place'
        self.age = '100'

    def printName(self):
        print self.name

    def printAddress(self):
        print self.address

    def printAge(self):
        print self.age

if __name__ == '__main__': 
    Person = Name()
    Person.printName()
    Person.printAddress()
    Person.printage()

我通過輸入./name.py執行此代碼。 如何從腳本末尾的函數printAddress()提取此代碼?

謝謝

如果您問如何啟動python腳本並使其在不同位置開始執行,那么您將必須啟動腳本並附帶一些有關您要執行的操作的信息。 最常見的方法是添加對命令行參數的支持。

import sys

if __name__ == '__main__':   

    for arg in sys.argv: 
        print arg

如果要單獨從命令行執行上述腳本,則不會執行任何操作,但是如果使用一些額外的參數(例如:

./launch.py my_argument another_argument and_so_on

您將看到腳本可以通過sys.argv列表訪問額外的啟動參數。 使用此功能,您可以檢查啟動時是否傳遞了所有的參數,然后在所需的位置開始執行腳本。

您的腳本的一個示例如下所示

import sys

class Name:

    def __init__(self):
        self.name = 'John'
        self.address = 'Place'
        self.age = '100'

    def printName(self):
        print self.name

    def printAddress(self):
        print self.address

    def printAge(self):
        print self.age


if __name__ == '__main__': 

    Person = Name()

    launchOptions = sys.argv[1:]

    if not launchOptions or 'name' in launchOptions:
        Person.printName()

    if not launchOptions or 'address' in launchOptions:
        Person.printAddress()

    if not launchOptions or 'age' in launchOptions:
        Person.printAge()

sys.argv [1:]上的范圍是因為sys.argv中的第一個條目將是啟動腳本的路徑。

因此,您可以啟動此示例並獲得以下結果

./launch
John
Place
100

./launch age
100

./launch address
Place

./launch name
John

現在,這只是一個非常基本的示例。 如果您決定朝這個方向走,那么對python的getopt模塊進行閱讀可能對您很有用。 它是命令行選項的解析器。

希望我正確理解了這個問題。

我不建議您實際執行此操作,因為這是一種無窮的遞歸函數,但是可以做到這一點:)

class Name():

    def __init__(self):
        self.name = 'John'
        self.address = 'Place'
        self.age = '100'

    def printName(self):
        print self.name

    def printAddress(self):
        print self.address
        main()

    def printAge(self):
        print self.age

def main():
    Person = Name()
    Person.printName()
    Person.printAddress()
    Person.printage()

if __name__ == '__main__': 
    main()

Person = Name()

指示該類的名稱實際上應為Person 完全刪除printXXX方法,並添加__repr__方法,例如

def __repr__(self):
    return "%s\n%s\n%s" % (self.name, self.address, self.age)

最后,我建議將名稱,地址和年齡添加到init接受的參數列表中:

def __init__(self, name, address, age):
    ...

實例化一個Person對象之后,您可以只打印它:

person = Person()
print person

處理命令行選項的一種更靈活的方法是使用“ optparse”模塊。 查看參考: http : //docs.python.org/library/optparse.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM