【发布时间】:2019-02-14 16:32:35
【问题描述】:
我刚刚开始学习 Python 中的类和对象,我遇到了以下问题
在某些情况下我定义的方法中似乎不适用于变量 n:
例如:
def play(self):
if n < 4:
n += 1
self.mood = moods[n]
else:
self.mood = self.mood
这会引发错误,即 n 未在“if n
def new_mood(self):
n = random.randint(0,2)
self.mood = moods[n]
我在这里缺少一些基础知识吗?
import random
moods = ['terrible',
'bad',
'neutral',
'good',
'great']
n = random.randint(0,2)
class animals:
def __init__(self, species, name, mood):
self.species = species
self.name = name
self.mood = mood
def default_mood(self):
self.mood = moods[2]
def new_mood(self):
n = random.randint(0,2)
self.mood = moods[n]
def play(self):
if n < 4:
n += 1
self.mood = moods[n]
else:
self.mood = self.mood
Max = animals('Dog', 'Max', moods[n])
Princess = animals('Cat', 'Princess', moods[n])
print(Max.name + ' mood is ' + Max.mood)
print(Princess.name + ' mood is ' + Princess.mood)
Max.new_mood()
Max.play()
Princess.play()
print(Max.name + ' mood is ' + Max.mood)
print(Princess.name + ' mood is ' + Princess.mood)
print(Max.mood)
print(Max.name + ' mood is ' + Max.mood)
print(Princess.name + ' mood is ' + Princess.mood)
【问题讨论】:
-
重新打开,因为建议的副本在这里没有意义 - 操作显然不想要全局。
-
@brunodesthuilliers 怎么样?
n是他们试图修改的全局变量,不是吗? -
@UnholySheep 不是 - OP 想要的也可能是一个实例属性。
-
@Marek 你确定你想要一个全局变量吗?一个
animal实例的情绪真的应该依赖于之前在anyanimal实例上对new_mood()和/或play()的调用吗?
标签: python class object variables methods