当涉及到课程时,我还是个初学者。
我有一个定义如下的类(为了这篇文章的目的而简化)
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保持不变,并且不会用新的随机数重新创建自己。
提前谢谢你
发布于 2017-02-15 01:39:13
只需在__init__中生成并分配id即可。通常,作为类的用户,您不希望自己生成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-15 01:28:28
sheetId变量位于该类的idMaker方法中,因此不能使用点运算符访问它。如果您正在尝试为类的实例创建自定义it,我建议在类构造函数__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)https://stackoverflow.com/questions/42232451
复制相似问题