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

时间:2017-02-14 17:25:02

标签: python python-3.x class oop python-object

在课堂上我是一个初学者。

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

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

提前谢谢

2 个答案:

答案 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)
相关问题