我有一个Python类,其中包含许多变量,包括:
class file:
def __init__(self, name)
self.name = name
self.size = None
self.num_lines = None
self.directory = None
创建实例后,我必须为这些变量赋值:
f = file("abc.txt")
f.size = get_file_info(f.name)
f.num_lines = count_lines(f.name)
f.directory = get_dir(f.name)
f.new_name = root + f.directory + f.name + f.size
我真正喜欢的是 使用 关键字的语法糖:
f = file("abc.txt")
using f:
size = get_file_info(name)
num_lines = count_lines(name)
directory = get_dir(name)
new_name = root + directory + name + size
也就是说,我想提供一个新的上下文,在Python完成所有剩余的搜索之前,首先搜索变量。
有这样的事吗?如果没有,它似乎是该语言的有用补充。
编辑:根据答案,我故意不想在 init 函数中执行此操作。出于个人原因。不是真的 - 它在我的用例中没有意义
答案 0 :(得分:0)
您要放在using
区块中的所有代码都应由您的班级__init__
方法处理。
class File:
def __init__(self, name)
self.name = name
self.size = get_file_info(name)
self.num_lines = count_lines(name)
self.directory = get_dir(name)
self.new_name = os.path.join(root, self.directory, self.name, self.fize)
f = File("abc.txt")
您所暗示的某些函数(get_file_info
等)可能更适合作为File
类的方法,而不是以文件名作为参数的独立函数。
答案 1 :(得分:0)
此语言没有支持。您只能按功能和模块创建变量名称空间。甚至没有课程(这就是为什么,即使在课堂上,你也必须使用self
来引用它的属性)