如何从多个函数开始一个Python脚本
我有一个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()
开始,一直到脚本的最后执行这段代码呢?
谢谢
4 个回答
0
这一行
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
1
我不建议你真的这样做,因为这样会导致一个无休止的递归函数,但其实是可以做到的 :)
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()
3
如果你想知道怎么启动你的 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 模块 可能会对你有帮助。它是一个用于解析命令行选项的工具。
希望我理解了你的问题。