在Python中声明变量的严格数据类型?

固态硬盘

在python中,当为变量分配的值不同于先前分配的类型时,是否有一条命令(或指令)发出警告?

x = int()   # "x" declared as integer
y = float() # "y" declared as float
x = 5       # "x" assigned an integer
y = 2.75    # "y" assigned a float
print(x)    # prints "5"
print(y)    # prints "2.75"
x = y       # !!! "x" is assigned a float; no warning raised !!!
print(x)    # prints 2.75
德莱尼

您不能控制全局或局部变量的分配,但是可以覆盖类对象属性的分配。这是一个使用setattr强制类型的类。它具有分配静态类型的方法(例如,int使用int()),也可以在首次分配变量时分配类型。对于类型非常严格,但可以更改以允许继承的类型。

class BabySitter(object):

    def __init__(self):
        object.__setattr__(self, "_types", {})

    # if you want static assignment
    def set_type(self, name, _type):
        self._types[name] = _type

    def __setattr__(self, name, value):
        _type = self._types.get(name)
        if _type:
            if type(value) is not _type: # or `if not isinstance(value, _type)`
                raise ValueError(
                    "BabySitter type conflict assigning '{}': was {} is {}".format(
                    name, _type, type(value)))
        # if you want dynamic assignment
        else:
            self._types[name] = type(value)
        object.__setattr__(self, name, value)

var = BabySitter()
var.set_type("x", int)     # static "x" declared as integer
var.set_type("y", float)   # static "y" declared as float
var.z = 123     # dynamic "z" int because of first assignment
var.x = 5       # "x" assigned an integer
var.y = 2.75    # "y" assigned a float
print(var.x)        # prints "5"
print(var.y)        # prints "2.75"
var.x = var.y           # <== exception is raised
print(var.x)        # prints 2.75

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

变量声明中没有数据类型

来自分类Dev

在Pandas中声明列数据类型

来自分类Dev

Swift中相同数据类型多变量声明的默认初始化器

来自分类Dev

如何在haskell中声明两个包含相同变量的数据类型?

来自分类Dev

PostgreSQL用显式数据类型声明变量

来自分类Dev

Python如何知道变量的数据类型?

来自分类Dev

ADA中变量的数据类型

来自分类Dev

声明中的两个或多个数据类型

来自分类Dev

目标C中的数据类型和声明

来自分类Dev

声明中的两个或多个数据类型

来自分类Dev

C ++中的动态堆栈数据类型声明

来自分类Dev

如何知道C中未知类型变量的数据类型?

来自分类Dev

Haskell中的变量关联类型/数据类型

来自分类Dev

Haskell中的变量关联类型/数据类型

来自分类Dev

在python中记录等效的数据类型

来自分类Dev

Python中的特定数据类型

来自分类Dev

在 Python 中验证数据类型

来自分类Dev

对象数据类型python中的矩阵

来自分类Dev

SQL我可以声明基于另一个变量的变量数据类型

来自分类Dev

如何在python中读取时转换变量的数据类型?

来自分类Dev

Python:如何更改数据类型并覆盖导入模块中的变量

来自分类Dev

变量的正确数据类型

来自分类Dev

变量数据类型错误?

来自分类Dev

时区变量的数据类型

来自分类Dev

参考变量的数据类型

来自分类Dev

转换变量数据类型

来自分类Dev

可移植地确定最严格的对齐数据类型

来自分类Dev

python变量是否具有数据类型?

来自分类Dev

询问变量C ++中的数据类型是什么