What is the python way to declare an existing object as an instance of a class?
我以前用过as3,喜欢它的语法,比如关键字
例如,如果我在编辑器中键入
Python是一种美丽的语言。我应该如何在python中完成上述操作?
如果你真的要把这个翻译出来,你最终会
1 | cat if isinstance(cat, Animal) else None |
然而,这不是一个常见的习语。
How am I suppose to do the above in Python?
号
我想说,一般情况下,您不应该在Python中这样做,尤其是出于文档目的。
在某些情况下,可以通过设置对象的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class Foo(object): @property def myname(self): return"I'm a Foo" class Bar(object): @property def myname(self): return"I'm a Bar" thing = Foo() print thing.myname thing.__class__ = Bar print thing.myname |
。
我认为这只适用于从
python没有类型声明。如果
在Python中,对象被创建为类的实例,不能将现有对象声明为类的实例。由于类具有
您正在寻找Python中的多态行为。
它并不像Java那样的其他语言工作——我们所拥有的是EDCOX1(4)。
从而导致
1 2 3 4 5 6 7 8 9 | class FirstObject(object): #someStuff class SecondObject(FirstObject): #someStuff >> someObject = SecondObject() >> isinstance(someObject, SecondObject) >> true |
同样适用于
1 2 | >> isinstance(someObject, FirstObject) >> true |
号
它是如何用点表示法工作的,称为方法解析顺序(MRO),它在类声明中查找"从左到右"的方法。这个特性在shell atm中不可用,但计划在即将发布的python中使用。
写这篇文章时,我发现这个问题让我的答案变得毫无意义。
您正在寻找检查实例类的方法。
另一种方法是,您可以使用
对于诸如生成器或函数之类的内置类型,可以使用
python中的名称没有类型。所以不需要进行强制转换,而作为回报,确定实例的类型是一个不错的选择。
至于提示特性,它是编辑器或IDE的特性,而不是Python。