关于python:python3为什么”string”不是str?

python3 why is a 'string' not a str?

本问题已经有最佳答案,请猛点这里访问。

我需要这个小片段来输出"这是一个字符串"(我需要myvar来满足条件是str)

1
2
3
4
5
myVar = 'some-string'
if myVar is str:
    print('this is a string')
else:
    print('this is NOT a string')

但当我运行它时,它会不断输出"这不是一个字符串"。我不明白,有人能指出我做错了什么,怎么解决吗?

我也尝试过:

1
2
3
4
5
myVar = str('some-string')
if myVar is str:
    print('this is a string')
else:
    print('this is NOT a string')

它也不起作用。

我不能使用isInstance()来检查任何内容,我必须保留

1
if myVar is str:

这个条件的值必须为真。

我也尝试过:

1
2
3
4
if 'some-string' is str:
    print('this is a string')
else:
    print('this is NOT a string')

它还输出"这不是字符串"

我不知道我需要做什么来喂它满足这个条件的东西


两种方式:

1
if type(myVar) is str:

1
if isinstance(myVar, str):

1
2
3
4
5
6
7
8
9
10
11
12
>>> string ="Hello"
>>> isinstance(string,str)
True
>>> isinstance(1,str)
False
>>> if isinstance(string,str):
    print("this is a string")
else:
    print("this is not a string")

this is a string
>>>


如果要检查对象是否是字符串(或任何类型),请使用isinstance(Myvar, str),如果myvar是字符串,则该值为true。

所以:

1
2
3
4
5
myvar = 'this is a string'
if isinstance(myvar, str):
    print(f'the variable {myvar} is a string')
else:
    print(f'the variable {myvar} is not a string')

要成为Python,不要用大写字母作为变量…


您的支票不正确,strtype类的对象,它可以创建class str的实例,正确的支票是:

1
2
3
4
5
myVar = str('some-string')
if isinstance(myVar,str):
    print('this is a string')
else:
    print('this is NOT a string')

以同样的方式给class A这张支票:

if x is A不正确

定义一个类会创建一个类type的特殊对象,该类负责创建所定义类的实例,这就是为什么您需要使用isinstace()issubclass()来使用这个特殊对象和给定的对象来回答查询。因为simple is检查对象x是否是对象a,而这不是真的。