gpt4 book ai didi

python - Python 3.x 可以强制方法参数是特定的类实例/对象吗? (阿拉 PHP)

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:41 25 4
gpt4 key购买 nike

Python 是动态类型的,没有对方法参数进行类型提示的规定。然而,同样是动态类型的 PHP,确实有一个类型提示的规定,即方法参数至少是一个类的实例(或者它是一个从类继承的类的实例)定义的类)。

public class Foo()
{
public function __construct($qux, ...)
{
$this->qux = qux;
...
}
}

public class Bar()
{
// "Type Hinting" done here enforcing
// that $baz is an instance of Foo
public function __construct(Foo $baz, ...)
{
$this->baz = $baz;
...
}
}

是否有类似的方法来强制方法参数是 Python 中的特定实例?

如果不是,那么简单地断言是正确的约定吗?

class Foo(object):
def __init__(self, qux=None, ...):
self.qux = qux
...


class Bar(object):
def __init__(self, baz=None, ...):
# "Type Hinting" done here as `assert`, and
# requires catch of AssertionError elsewhere
assert isinstance(baz, Foo)

self.baz = baz
...

如果这是使用 assert 的风格是不正确/不优雅/“不是 pythonic”,我应该怎么做?

最佳答案

不是开箱即用的。但是,您可以合并 parameter annotations使用函数装饰器几乎可以毫不费力地编写自己的装饰器。

但是请记住,duck typing 的整个概念就是要避免这种逻辑。

关于python - Python 3.x 可以强制方法参数是特定的类实例/对象吗? (阿拉 PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23071213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com