无法使用缩写if/els初始化/错误更正对象名

2024-05-17 14:31:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想不出更好的方法来问这个问题,但是我正在初始化一个对象,对于这个名称,我正在尝试用速记法纠正错误,如果没有输入字符串的话。如果不是字符串,则必须重新输入。努力使我的代码更短,并学习如何使无错误的代码

这是我的密码:

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

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


Tags: 对象方法字符串代码nameself名称密码
1条回答
网友
1楼 · 发布于 2024-05-17 14:31:43

您的代码无法工作,因为无法在条件表达式(an 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()

相关问题 更多 >