如果/ else,无法用速记初始化/错误更正对象名称

时间:2017-08-09 19:57:51

标签: python python-3.x

无法想出一个更好的方式来提出这个问题,但是我正在初始化一个对象,而对于名称,我试图用速记错误纠正,如果没有输入除了字符串之外的其他东西。如果它不是字符串,则必须重新输入。试图缩短我的代码并学习如何制作无错误的代码。

这是我的代码:

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

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

1 个答案:

答案 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()