0

我在上课时有点初学者。

我有一个定义如下的类(为了这篇文章的目的而简化)

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 保持不变并且不会用新的随机数重新创建自己。

先感谢您

4

2 回答 2

2

只需生成并分配idin __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
于 2017-02-14T17:39:13.287 回答
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)
于 2017-02-14T17:28:27.790 回答