我试图了解一点python继承。这是一个用例:
class Test:
def hello():
print("hello")
return "hello"
def hi():
print(hello())
print("HI")
class Test1(Test):
hi()
pass
x = Test1()
x.hello()
我不明白为什么我不能打电话给#34; hi()"在Test1类中。它继承了它的类Test吗?
答案 0 :(得分:0)
我认为你误解了class
es和object
的关系和定义。 类就像创建对象的蓝图。通过在类中编写方法,您实际上是定义了可以从类蓝图创建的对象的行为。所以,使用您的代码:
class Test:
def hello():
print("Hello")
return "Hello"
def hi():
print(hello())
print("Hi")
class Test1(Test):
hi() # <- You really shouldn't call a method directly from a "blueprint" class
pass
x = Test1()
x.hello()
虽然你的最后两行代码是有效的,但是直接在类定义中调用类范围之外的方法是个坏主意(并且几乎总是无效的)。 hi()
在Test1
类中不起作用的原因是它未在Test1
的范围内定义;即使这个类确实继承自Test
类,它只会影响从类创建的对象(就像你从{{1}创建的对象x
一样} class)。
以下是有关其他相关问题的类和对象的更详细说明:What are classes, references and objects?
希望这有帮助!