首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python;使用由方法创建的实例变量

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

Stack Overflow用户
提问于 2017-02-15 01:25:02
回答 2查看 51关注 0票数 0

当涉及到课程时,我还是个初学者。

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

代码语言:javascript
运行
复制
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”(同样,这可能是完全不正确的):

代码语言:javascript
运行
复制
newSheet = worksheet('testsheet')
id = newSheet.sheetID

这当然不起作用,但我不确定我需要做什么才能使其起作用。

我想确保ID保持不变,并且不会用新的随机数重新创建自己。

提前谢谢你

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-15 01:39:13

只需在__init__中生成并分配id即可。通常,作为类的用户,您不希望自己生成id。就您而言,实例化Worksheet为您提供了一个完整的、可用的对象。

代码语言:javascript
运行
复制
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)

将输出

代码语言:javascript
运行
复制
somefilenamewithspaces
somefilenamewithspaces68237
票数 2
EN

Stack Overflow用户

发布于 2017-02-15 01:28:28

sheetId变量位于该类的idMaker方法中,因此不能使用点运算符访问它。如果您正在尝试为类的实例创建自定义it,我建议在类构造函数__init__方法中执行此操作,以便在创建对象时为其赋值。也许可以考虑以下几点:

代码语言:javascript
运行
复制
class worksheet:
    def __init__(self, filename):
        self.filename = (filename).strip().replace(" ","")
        number = '{:05d}'.format(random.randrange(1,99999))
        self.sheetID = self.filename+str(number)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42232451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档