【问题标题】:Accessing member variable in Python?在 Python 中访问成员变量?
【发布时间】:2018-11-22 07:03:48
【问题描述】:

我最近开始学习python(来自C++背景),但我不明白我应该如何访问成员变量(nonce)并在名为def mine_block()的第二个函数中使用它。不是所有成员可以从任何地方公开获得的 Block 类?

class Block:
    '''
    Дефинираме ф-я , която създава
    променливите като членове на класа Block
    '''
    def _init_(self,prevHash,index,nonce,data,hash,time):
        self.prevHash = prevHash
        self.index = index
        self.nonce = nonce
        self.data = data
        self.hash = hash
        self.time = time

    def get_hash(self):
        print(self.hash)

    def mine_block(self,difficulty):
        arr = []
        for i in range(difficulty):
            arr[i] = '0'
        arr[difficulty] = '\0'
        str = arr
    while True:
        '''
        here I receive an error
        unresolved referene nonce
        '''
        nonce++

【问题讨论】:

  • 您的while 循环不是该方法的一部分。您还需要self.nonce。 ++ 也不行; self.nonce += 1 代替。
  • 只是self.nonce

标签: python class oop member


【解决方案1】:

要在类方法中引用类属性,您需要使用关键字self 将对象本身传递给方法。然后就可以使用self.foo访问其他类方法和类属性了。

此外,while True 循环不应在类的根级别缩进。最后,foo++ C 风格在 Pyhton 中不正确,应该是 foo += 1

【讨论】:

    【解决方案2】:

    在 Python 中,所有实例成员都是通过类实例公开可用的,该类实例以 self 的形式传递给类方法。因此你应该使用self.nonce。

    此外,在 Python 中要小心缩进。您的 mine_block 方法应如下所示:

    def mine_block(self,difficulty):
        ...
        str = arr
        while True:
            self.nonce += 1
    

    【讨论】:

      猜你喜欢
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多