Python;使用方法创建的实例变量

Python; working with instance variable created by a method

说到 classes,我还是个初学者。

我有一个 class 定义如下(为此 post 进行了简化)

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

提前致谢

sheetId 变量位于 class 的 idMaker 方法中,因此您无法使用点运算符访问它。如果您尝试为 class 的实例创建自定义 ID,我建议您在 class 构造函数 __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)

只需在 __init__ 中生成并分配 id。一般来说,作为 class 的用户,您不想关心自己生成 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