一、单继承
继承,继承顾名思义,把你的都给我,也就是说一个类有了另一类的属性和方法。继承的类叫子类,被继承的类叫父类,也就是说子类有父类所有的方法和属性,而且子类还有自己的方法和属性,举个例子,特仑苏是牛奶,但是不是所有的牛奶都叫特仑苏,牛奶是父类,特仑苏是子类。
只有一个父类的继承叫做单继承,我们来看一下代码。
class fulei: def __init__(self): pass def fangfa(self): print('我被继承的') class zilei(fulei): pass dog = zilei() dog.fangfa()
程序运行结果不出所料,输出了“我被继承的”,可以看出,在“zilei”我并没有定义“fangfa”方法,但是实例后,却可以调用,说明“zilei”是有这个方法,哪来的呢?继承“fulei”来的。
同时在这里我学到一个新知识,默认情况下,类是从“object”类继承下来的,这种情况下“object”和括号都可以省略,所以我们定义“fulei”时,后面没有括号。若不是继承“object”类,那么需要按照规则编写代码。
二、多继承
顾名思义,多继承就是继承了多个父类,拥有多个父类的属性和方法,这个在显示生活中也是存在的,比如说男大学生,既有男人的全部属性,也有大学生的全部属性,不知道我这个例子举的恰当不恰当。我们来看一下代码:
class Dog: def run(self): print('我会跑') class Cat: def jump(self): print('我会跳') class zilei(Dog,Cat): pass dog = zilei() dog.run() dog.jump()
运行成功,输出结果是:
我会跑
我会跳
说明子类具有两个的父类的方法,这里我尝试没有写__init__方法,程序也是能正常运行,为此,我又专门了解了下__init__()的用法。
三、__init__()函数
`__init__()`函数是Python类中的特殊方法之一,它在创建对象时被自动调用。该函数通常用于初始化对象的属性和执行其他必要的操作。
`__init__()`函数的语法如下:
```python class ClassName: def __init__(self, arg1, arg2, ...): self.attribute1 = arg1 self.attribute2 = arg2 ... ```
其中,`ClassName`表示要定义的类名,`arg1`, `arg2`, ...表示传递给构造函数的参数。在函数内部,我们可以使用`self`关键字来引用当前对象的属性。
下面是一个简单的例子,演示了如何使用`__init__()`函数来初始化一个名为`Person`的类的对象:
class Person: def __init__(self, name, age): self.name = name self.age = age person1 = Person("Alice", 25) print(person1.name) # Output: Alice print(person1.age) # Output: 25
在这个例子中,我们定义了一个名为`Person`的类,并在其中定义了一个`__init__()`函数。该函数接受两个参数:`name`和`age`,并将它们分别赋值给对象的`name`和`age`属性。然后我们创建了一个名为`person1`的`Person`对象,并打印出它的属性值。
__init__()函数确实不是必须的,但是它在初始化的时候可以对一些属性进行定义,这样就大大方便了我们调用类里面的方法,不需要重复传参。
总结
以下是关于Python类继承的一些总结:
1. 子类可以继承父类的所有属性和方法,包括私有属性和方法。
2. 子类可以重写父类的方法,以实现不同的行为。
3. 子类可以添加新的属性和方法,以扩展父类的功能。
4. Python中的继承是单向的,即子类不能继承父类的基类。
5. Python中的继承是动态的,即子类可以在运行时修改其继承自父类的属性和方法。
6. Python中的继承是多态的,即子类可以重写父类的方法,并根据不同的情况执行不同的代码。
7. Python中的继承是一种面向对象编程的基本概念,它使得代码更加模块化、可重用和可维护。