无法想出一个更好的方式来提出这个问题,但是我正在初始化一个对象,而对于名称,我试图用速记错误纠正,如果没有输入除了字符串之外的其他东西。如果它不是字符串,则必须重新输入。试图缩短我的代码并学习如何制作无错误的代码。
这是我的代码:
def __init__(self, name, price, quantity):
self.name = name if isinstance(name, str) else self.name = input()
它一直说不使用name
和isinstance
。有没有更好的方法来纠正初始化对象?
答案 0 :(得分:1)
您的代码无法正常工作,因为您无法在条件表达式(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
但是,您可以在self.name =
之后省略else
(这是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()