相关疑难解决方法(0)

在Python中检查类型的规范方法是什么?

检查给定对象是否属于给定类型的最佳方法是什么?如何检查对象是否继承给定类型?

假设我有一个对象o.我如何检查它是否是一个str

python types

1171
推荐指数
12
解决办法
80万
查看次数

如何确定Python对象是否为字符串?

如何检查Python对象是否为字符串(常规或Unicode)?

python string compatibility types

379
推荐指数
9
解决办法
29万
查看次数

如何检查变量是否是python 2和3兼容性的字符串

我知道我可以使用:isinstance(x, str)在python-3.x中但是我需要检查python-2.x中是否有某个字符串.将isinstance(x, str)在python-2.x中按预期工作?或者我需要检查版本并使用isinstance(x, basestr)

具体来说,在python-2.x中:

>>>isinstance(u"test", str)
False
Run Code Online (Sandbox Code Playgroud)

和python-3.x没有 u"foo"

python string python-2.x python-3.x

163
推荐指数
7
解决办法
7万
查看次数

156
推荐指数
2
解决办法
7万
查看次数

是否有一种python方式将“对象和列表”之类的“序列”对象与“字节和str”之类的“序列”对象区分开来

我有这样的功能

def print_stuff(items):
    if isinstance(items, (str, bytes)):
        items = (items,)
    for item in items:
        print (item)
Run Code Online (Sandbox Code Playgroud)

可以这样称呼:

In [37]: print_stuff(('a', 'b'))
a
b

In [38]: print_stuff('a')
a
Run Code Online (Sandbox Code Playgroud)

我不喜欢做,isinstance (items, (str, bytes))我更愿意做isinstance(item, (collections.abc.MAGIC))

其中MAGIC是所有序列对象的ABC,可以包含其他序列对象,例如

  • 元组
  • 清单
  • numpy.array
  • 一些用户定义的矢量类,等等

但不是:

  • 力量
  • 个字节
  • 一些用户定义的UTF-16的str类,等等

恐怕这是不可能的,tuple并且str具有相同的7个ABC :(

In [49]: [v for k, v in vars(collections.abc).items()
    ...:                                   if inspect.isclass(v) and issubclass(tuple, v) ]
Out[49]:
[collections.abc.Hashable,
 collections.abc.Iterable,
 collections.abc.Reversible,
 collections.abc.Sized,
 collections.abc.Container,
 collections.abc.Collection,
 collections.abc.Sequence]

In [50]: [v for k, v in …
Run Code Online (Sandbox Code Playgroud)

abc python-3.x

6
推荐指数
1
解决办法
548
查看次数

异常处理中的这种奇怪行为是什么?

我正在使用python 2.7,但是试图创建一个代码来检查对象是否是与python 3+兼容的basetring的子类.我试图遵循这里建议的方法,并在过程中发现了一个我不理解的行为

如果我做:

def foo():
    try: basestring
    except NameError:
        print "a"
foo()
Run Code Online (Sandbox Code Playgroud)

什么都没发生.

如果我稍微修改那个代码只是在except:

def foo():
    try: basestring
    except NameError:
        print "a"
        basestring=str
foo()
Run Code Online (Sandbox Code Playgroud)

然后打印"a".

我不明白如何向except块添加内容,可以影响异常的触发.

我在函数外检查了相同的代码:

try:
    basestring
except NameError:
    print("a")
    basestring=str
Run Code Online (Sandbox Code Playgroud)

但在这种情况下没有打印出来.

python exception-handling python-2.7

2
推荐指数
1
解决办法
84
查看次数

在Python中调用__包围的方法

我正在读一本关于Python的书,它说当你调用help(obj)列出所有可以调用obj的方法时,__双方包围的方法都是无法调用的私有辅助方法.

但是,列出的字符串方法之一是__len__,您可以验证if是否s为某个字符串,进入s.__len__()Python返回的长度为s.

为什么可以调用其中的一些方法,例如__len__,但其他方法无法调用?

python methods

1
推荐指数
1
解决办法
157
查看次数

Python如何检查变量的类型

基本上,我需要检查变量存储的数据类型,然后用新数据替换变量中存储的数据.例如,如何检查变量是存储字符串数据还是整数数据?

源代码:

class Toy:

    #Toy Class Constructor
    def __init__(self):
        Name = "Train Engine";
        ID = "TE11";
        Price = 0.99;
        Minimum_Age = 4;

    #Return Name
    def Return_Name(self):
        print(Name)
        return Name

    #Set Name
    def Set_Name(self, Variable):
        #This is where I would need to check the type of data that the variable 'Variable' is currently storing.
        Name = Variable

    #Return ID
    def Return_ID(self):
        print(ID)
        return ID

    #Set ID
    def Set_ID(self, Variable):
        #This is where I would need to check the type of data …
Run Code Online (Sandbox Code Playgroud)

python

0
推荐指数
1
解决办法
108
查看次数