我最近开始学习python(来自C ++背景),但是我不明白如何访问成员变量(nonce
)并在名为def mine_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++
答案 0 :(得分:1)
要在类方法中引用类属性,您需要使用关键字self
将对象本身传递到方法中。然后,您可以使用self.foo
访问其他类方法和类属性。
此外,不应在类的根级别缩进while True
循环。最后,foo++
C样式在Pyhton中不正确,应为foo += 1
答案 1 :(得分:1)
在Python中,所有实例成员都可以通过类实例公开获得,该类实例以self
的形式传递给类方法。因此,您应该使用self.nonce
。
此外,在Python中要小心缩进。您的mine_block方法应类似于:
def mine_block(self,difficulty):
...
str = arr
while True:
self.nonce += 1