取决于 class 实例中的值
Depending values in an instance of a class
我是 python 的新手,遇到一个简单的问题:
这是一个示例代码:
import random
class shirt:
def __init__(self, color, size, size_description):
self.color = color
self.size = size
self.size_description = size_description
def randomshirtsize():
randomshirtsize_ch = (
's',
'm',
'l'
)
return random.choice(randomshirtsize_ch)
def randomshirtdescription():
if randomshirtsize() == 's':
return 'small'
elif randomshirtsize() == 'm':
return 'medium'
elif randomshirtsize() == 'l':
return 'large'
else:
return 'Error! No valid size found'
shirt1 = shirt('blue', randomshirtsize(), randomshirtdescription())
print('Your shirt is size ' + shirt1.size + '. In other words ' + shirt1.size_description)
理论上,randomshirtdescription() 应该与 randomshirtsize() 的输出匹配,但它是完全随机的。谁能帮我吗?
我也想继续使用我的 classes/instances 方法,因为我的主要代码要大得多并且取决于 类 和实例。
编辑:这是采用 Alihoseiny 先生方法的新代码,但我仍然无法让它工作。
import random
class shirt:
def __init__(self, color, size):
self.color = color
self.size = size
self.size_description = get_size_description()
def get_size_description(self):
if self.size == 's':
return 'small'
elif self.size == 'm':
return 'medium'
elif self.size == 'l':
return 'large'
else:
return 'Error! No valid size found'
def randomshirtsize():
randomshirtsize_ch = (
's',
'm',
'l'
)
return random.choice(randomshirtsize_ch)
shirt1 = shirt('blue', randomshirtsize())
print('Your shirt is size ' + shirt1.size + '. In other words ' + shirt1.size_description)
当我 运行 时,出现以下错误:
NameError:名称 'get_size_description' 未定义
randomshirtsize
每次调用时都会创建一个随机输出,所以当你想在randomshirtdescription
中使用它时,你应该将它的值存储到一个局部变量中并使用if
语句中的那个变量。像这样:
def randomshirtdescription():
random_size = randomshirtsize()
if random_size == 's':
return 'small'
elif random_size == 'm':
return 'medium'
elif random_size == 'l':
return 'large'
else:
return 'Error! No valid size found'
编辑
如果您进行上述更改,您的功能可以正常工作,但在与您的 class 一起使用时它们的行为不正确。我觉得还是改一下比较好。
我认为最好将 randomshirtdescription
函数更改为 returns 描述给定衬衫尺码的函数。像这样:
def shirtdescription(shirt_size):
if shirt_size == 's':
return 'small'
elif shirt_size == 'm':
return 'medium'
elif shirt_size == 'l':
return 'large'
else:
return 'Error! No valid size found'
现在您可以通过以下方式调用 class 和函数从您的代码中获得预期结果:
random_size = randomshirtsize()
shirt1 = shirt('blue', random_size, randomshirtdescription(random_size))
但是,这个解决方案仍然不是面向对象的。我认为最好将这个新 shirtdescription
转换为您的 shirt
class.
的方法
我认为更好的 class 应该是这样的:
class shirt:
def __init__(self, color, size):
self.color = color
self.size = size
self.size_description = self.get_size_description()
def get_size_description(self):
if self.size == 's':
return 'small'
elif self.size == 'm':
return 'medium'
elif self.size == 'l':
return 'large'
else:
return 'Error! No valid size found'
我是 python 的新手,遇到一个简单的问题: 这是一个示例代码:
import random
class shirt:
def __init__(self, color, size, size_description):
self.color = color
self.size = size
self.size_description = size_description
def randomshirtsize():
randomshirtsize_ch = (
's',
'm',
'l'
)
return random.choice(randomshirtsize_ch)
def randomshirtdescription():
if randomshirtsize() == 's':
return 'small'
elif randomshirtsize() == 'm':
return 'medium'
elif randomshirtsize() == 'l':
return 'large'
else:
return 'Error! No valid size found'
shirt1 = shirt('blue', randomshirtsize(), randomshirtdescription())
print('Your shirt is size ' + shirt1.size + '. In other words ' + shirt1.size_description)
理论上,randomshirtdescription() 应该与 randomshirtsize() 的输出匹配,但它是完全随机的。谁能帮我吗? 我也想继续使用我的 classes/instances 方法,因为我的主要代码要大得多并且取决于 类 和实例。
编辑:这是采用 Alihoseiny 先生方法的新代码,但我仍然无法让它工作。
import random
class shirt:
def __init__(self, color, size):
self.color = color
self.size = size
self.size_description = get_size_description()
def get_size_description(self):
if self.size == 's':
return 'small'
elif self.size == 'm':
return 'medium'
elif self.size == 'l':
return 'large'
else:
return 'Error! No valid size found'
def randomshirtsize():
randomshirtsize_ch = (
's',
'm',
'l'
)
return random.choice(randomshirtsize_ch)
shirt1 = shirt('blue', randomshirtsize())
print('Your shirt is size ' + shirt1.size + '. In other words ' + shirt1.size_description)
当我 运行 时,出现以下错误: NameError:名称 'get_size_description' 未定义
randomshirtsize
每次调用时都会创建一个随机输出,所以当你想在randomshirtdescription
中使用它时,你应该将它的值存储到一个局部变量中并使用if
语句中的那个变量。像这样:
def randomshirtdescription():
random_size = randomshirtsize()
if random_size == 's':
return 'small'
elif random_size == 'm':
return 'medium'
elif random_size == 'l':
return 'large'
else:
return 'Error! No valid size found'
编辑
如果您进行上述更改,您的功能可以正常工作,但在与您的 class 一起使用时它们的行为不正确。我觉得还是改一下比较好。
我认为最好将 randomshirtdescription
函数更改为 returns 描述给定衬衫尺码的函数。像这样:
def shirtdescription(shirt_size):
if shirt_size == 's':
return 'small'
elif shirt_size == 'm':
return 'medium'
elif shirt_size == 'l':
return 'large'
else:
return 'Error! No valid size found'
现在您可以通过以下方式调用 class 和函数从您的代码中获得预期结果:
random_size = randomshirtsize()
shirt1 = shirt('blue', random_size, randomshirtdescription(random_size))
但是,这个解决方案仍然不是面向对象的。我认为最好将这个新 shirtdescription
转换为您的 shirt
class.
我认为更好的 class 应该是这样的:
class shirt:
def __init__(self, color, size):
self.color = color
self.size = size
self.size_description = self.get_size_description()
def get_size_description(self):
if self.size == 's':
return 'small'
elif self.size == 'm':
return 'medium'
elif self.size == 'l':
return 'large'
else:
return 'Error! No valid size found'