【问题标题】:Python isinstance returns false. Custom class [closed]Python isinstance 返回 false。自定义类[关闭]
【发布时间】:2020-10-29 14:22:20
【问题描述】:

我已经写了以下代码。

class Mammal:
    def info():
        return 'I have fur on my body.'

    def identity_mammal():
        print('I am a mammal')

class Primate(Mammal):
    def info():
        return Mammal.info() + ' I have a large brain.'

    def identity_primate():
        print('I am a primate')

class Ape(Primate):
    def info():
        return Primate.info() + ' I am monkey oooh oooh aaah aaah.'

    def identity_ape():
        print('I am an ape')

class Human(Primate):
    def info():
        return Primate.info() + ' I am human, me bipedal SMART monkey'

    def identity_human():
        print('I am a human')

John = Human

print(isinstance(John, Mammal))
print(isinstance(John, Primate))
print(isinstance(John, Human))
print(isinstance(John, Ape))

这是一个关于继承的简单任务,但是当我使用 isinstance 函数时,我刚刚创建的 Human 的实例似乎不是人类

[iveris@ic-rh7mnifi-105 oblig44]$ python3 inheritance.py 

False
False
False
False

【问题讨论】:

  • 错字:John = Human 必须是 John = Human()
  • 用你自己的话来说,你希望John = Human做什么?

标签: python isinstance


【解决方案1】:

要创建实例,需要使用括号:

John = Human()

print(isinstance(John, Mammal))
print(isinstance(John, Primate))
print(isinstance(John, Human))
print(isinstance(John, Ape))

【讨论】:

  • 但使用John = Human,并写print(John.info()),我得到I have fur on my body.... etc 打印。在声明 John 时添加括号确实使 isinstance 工作,但使 print(John.info()) 给我一个错误
猜你喜欢
  • 1970-01-01
  • 2021-02-15
  • 2018-03-24
  • 1970-01-01
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
  • 2012-05-21
相关资源
最近更新 更多