Python中has a与is a

可参考链接:is-a和has-a的区别

1、has a 关系

  1. has a :一个类中使用了另外一种自定义的类型
  2. 类型:
    系统类型 str、 int、 float、 list 、dict 、 tuple、 set
    自定义类型 算是自定义的类,都可以将其当成一种类型。类也可以看成一种类型。

2、is a 关系(继承)

  1. 简单说:就是继承关系。

  2. 如果类中不定义__init__,调用父类 super class的__init__

  3. 如果类继承父类也需要定义自己的__init__,就需要在当前类的__init__调用一下父类__init__

  4. 如何调用父类__init__:

    super().__init__(参数)
    super(类名,对象).__init__(参数)
    
  5. 如果父类有eat()方法,子类也定义了一个eat()方法,默认搜索的原则:先找当前类,再去找父类。父类提供的方法不能满足子类的需求,就需要在子类中定义一个同名的方法,这种行为:重写(override)。

  6. 子类的方法中也可以调用父类方法:super().方法名(参数)。

  7. 示例:

    class Person:
        def __init__(self,name,age):
            self.name = name
            self.age = age
    class Student(Person):
        def __init__(self,name,age,clazz):
            super().__init__(name,age)
            self.clazz = clazz
    
    class Employee(Person):
        def __init__(self,name,age,employer,salary): #报阴影
            # 如何调用父类__init__
            super().__init__(name,age)
            self.employer = employer
            self.salary = salary
    
    class Doctor(Person):
        def __init__(self,name,age):
            super().__init__(name,age)
            self.name = name
            self.age = age
    
发布了84 篇原创文章 · 获赞 36 · 访问量 4545

猜你喜欢

转载自blog.csdn.net/qq_41475583/article/details/104970141