【发布时间】:2021-04-15 03:07:25
【问题描述】:
class MetaData():
maxSize = 2**10
# class definition code
if not os.path.exists('sample.data'):
SSD = open('sample.data', 'wb+')
data = {
0: [],
1: {'.': None,}
}
data[1]['~'] = data[1]
MetaData.save() # i want to call the save function here
# class function
@classmethod
def save(cls):
cls.SSD.seek(0)
cls.SSD.write(b' ' * cls.maxSize)
cls.SSD.seek(0)
cls.SSD.write(pickle.dumps(cls.data))
我想在类块中使用save() 函数。我试过MetaDate.save() 和简单的save() 两者都抛出错误
有什么办法可以做到吗?
编辑
是的,maxSize 是一个类 var,是的,我可以使用 cls.maxSize 访问它。
【问题讨论】:
-
另外,
SSD不是会员,所以cls.SSD不起作用。 -
它也不是类函数,它是一个实例函数,其中
self的常用参数被重命名了 -
为了使函数成为类函数,你应该添加装饰器@classmethod,但你的代码仍然无法工作
-
除非您出于某种原因确实需要一个类,否则您可能想要更接近 this
标签: python class oop class-method class-members