python - 无法使用简写 if/else 初始化/错误更正对象名称

标签 python python-3.x

想不出更好的方法来问这个问题,但我正在初始化一个对象,对于名称,我尝试使用速记 if else 进行错误纠正,以防未输入字符串以外的任何内容。如果它不是字符串,那么他们必须重新输入它。尝试让我的代码更短并学习如何编写无错误的代码。

这是我的代码:

def __init__(self, name, price, quantity):
    self.name = name if isinstance(name, str) else self.name = input()

它一直说没有使用nameisinstance。有没有更好的方法来纠正初始化对象的错误?

最佳答案

您的代码不起作用,因为您无法在条件表达式中进行赋值(sth1 if ... else sth2):

 def __init__(self, name):
    self.name = name if isinstance(name, str) else self.name = input()

抛出:

  File "<ipython-input-23-a0246a5f014d>", line 3
    self.name = name if isinstance(name, str) else self.name = input()
               ^
SyntaxError: can't assign to conditional expression

但是,您可以省略 else 之后的 self.name = (这就是 SyntaxError 的原因):

def __init__(self, name):
    self.name = name if isinstance(name, str) else input()

这相当于:

def __init__(self, name):
    if isinstance(name, str):
        self.name = name 
    else:
        self.name = input()

关于python - 无法使用简写 if/else 初始化/错误更正对象名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45599596/

相关文章:

Python - 为什么每次完整的 for 循环迭代后 y 的值都会增加?

Python字符串解析名字和数字

python - Django 过滤查询集 __in=查询集中*每个*项目的列表

python - Pycharm **kwargs 自动完成

python - Anaconda: cannot import cv2 even though opencv is installed (how to install opencv3 for python3)

python - axes_divider 主机轴的 inset_axis 的纵横比(相对于大小和位置)

python - 字节表示中的\t 和\r 是什么?

Python3 和 hmac 。如何处理不是二进制的字符串

python - 使用 JSON 将数据从 Python 导出到 Tableau?

python-3.x - 无法在 Mac Os 上的 python 中安装beautifulsoup4