我有一个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()
中解释出这段代码?
由于
答案 0 :(得分: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列表访问额外的启动参数。使用此功能,您可以在启动时检查任何传递的args,然后开始在所需位置执行脚本。
您的脚本的一个示例如下
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
现在这只是一个非常基本的例子。如果您决定朝着这个方向前进,那么您可以阅读pythons getopt module。它是命令行选项的解析器。
希望我能正确理解这个问题。
答案 1 :(得分: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()
答案 2 :(得分: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
答案 3 :(得分:0)
处理命令行选项的更灵活方法是使用'optparse'模块。查看参考:http://docs.python.org/library/optparse.html