在课堂上我是一个初学者。
我有一个如下定义的类(为了这篇文章而简化)
class worksheet:
def __init__(self, filename):
self.filename = (filename).strip().replace(" ","")
def idMaker(self):
number = '{:05d}'.format(random.randrange(1,99999))
sheetId = self.filename+str(number)
我希望能够通过说出以下内容来获取每个实例的'sheetID'(同样,这可能完全不正确):
newSheet = worksheet('testsheet')
id = newSheet.sheetID
这当然不起作用,但我不确定我需要做些什么来使其发挥作用。
我想确保ID保持不变,并且不会使用新的随机数重新创建。
提前谢谢
答案 0 :(得分:2)
只需在id
中生成并分配__init__
即可。一般而言,作为班级的用户,您并不想关心自己生成id
。就你而言,实例化Worksheet
会为你提供一个完整的,可用的对象。
import random
class Worksheet(object):
def __init__(self, filename):
self.filename = filename.strip().replace(' ','')
number = '{:05d}'.format(random.randrange(1,99999))
self.sheet_id = self.filename + str(number)
sheet = Worksheet(' some filename with spaces ')
print(sheet.filename)
print(sheet.sheet_id)
将输出
somefilenamewithspaces
somefilenamewithspaces68237
答案 1 :(得分:0)
sheetId
变量存在于该类的idMaker
方法中,因此您无法使用点运算符访问它。如果您尝试为类的实例创建自定义ID,我建议您在类构造函数__init__
方法中执行此操作,以便在创建对象时分配它。也许考虑以下几点:
class worksheet:
def __init__(self, filename):
self.filename = (filename).strip().replace(" ","")
number = '{:05d}'.format(random.randrange(1,99999))
self.sheetID = self.filename+str(number)