【问题标题】:update class variable using function defined within self使用 self 中定义的函数更新类变量
【发布时间】:2019-01-07 11:55:17
【问题描述】:

我有这样的事情:

class updateMyNumber:
    def __init__(self, number):
        self.number = update_number(number)

    def update_number(self, number):
        self.number = number * 2

inst = updateMyNumber(5)

我收到以下错误:

NameErrorTraceback(最近一次调用最后一次) 在 () ----> 1 inst = updateMyNumber(5)

in init(自我,数字) 1类updateMyNumber: 2 def init(自我,数字): ----> 3 self.number = update_number(number) 4 5 def update_number(self, number):

NameError: name 'update_number' 未定义

我希望 inst 返回 25。定义类的最佳方式是什么?

注意:我不想写 self.number = number * 2

【问题讨论】:

  • "注意:我不想写 self.number = number * 2" 然后使用另一种语言。显式的 self 将保留在 Python 中。我想如果你真的想的话,你可以重构你所有的代码来使用闭包和嵌套范围for simulating classes。不过,我建议只使用预期的语言结构。

标签: python


【解决方案1】:

你应该调用self方法:

class updateMyNumber:
    def __init__(self, number):
        self.update_number(number)

    def update_number(self, number):
        self.number = number * 2

但设置实例变量的更好方法__init__内,阅读should-all-member-variables-be-initialized-in-init

所以我推荐你,一些东西:

class updateMyNumber:
    def __init__(self, number):
        self.number = self.update_number(number)

    def update_number(self, number):
        return number * 2

【讨论】:

    猜你喜欢
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多