首页 > 其他分享 >多组合少继承

多组合少继承

时间:2022-11-18 11:45:37浏览次数:48  
标签:__ name 组合 继承 self age def

继承:

  强调类与类之间的关系

组合:

  强调对象和对象之间的关系

清楚python支持多继承,从而涉及到一些MRO的点,这里不做赘述,在实际工作过程中,我们经常会使用继承来实现代码复用,如果仅仅是为了复用,还是比较推荐使用组合方式,因为继承方式,使得类与类之间的耦合性变得异常紧密,这多少违背了迪米特法则

 1 """
 2 OOP中三大特性之一:继承
 3 如果单纯为了代码复用更多的可以考虑
 4 组合,继承类与类之间耦合度高
 5 某种程度上,委托也可以是继承的一种替代方案
 6 """
 7 
 8 
 9 class A:
10     def __init__(self, name):
11         self.name = name
12 
13     def run(self):
14         return "只有永不遏制的奋斗"
15 
16 
17 class B:
18     def __init__(self, age):
19         self.age = age
20 
21     def say(self):
22         return "才能使青春之花"
23 
24 
25 class Valley:
26     def __init__(self, name: str = None, age: int = None):
27         # 类实例对象作为属性
28         self.a = A(name=name)
29         self.b = B(age=age)
30 
31     def test(self):
32         print(self.a.run())
33         print(self.b.say())
34 
35 
36 if __name__ == '__main__':
37     Valley().test()

output: 

  只有永不遏制的奋斗
  才能使青春之花

 

标签:__,name,组合,继承,self,age,def
From: https://www.cnblogs.com/shixiaogu/p/16902711.html

相关文章

  • 针对某客服系统的组合攻击
    前言本文从漏洞利用到对该客服系统进行渗透测试中遇到的问题做详细解析,并在文章结尾公布黑客针对该系统进行攻击的样本。......
  • 4. servlet类的继承关系与生命周期
    #继承关系:##自定义类->HttpServlet->GenericServlet->Servlet(接口)。#Servlet接口核心方法:init()、service()、destroy()。##service()方法:由HttpServlet类实现,查看源......
  • 软件设计模式白话文系列(十二)组合模式
    1、模式描述组合模式属于结构型模式,把多个对象组成树状结构来表示局部与整体,这样用户可以以相同的方式对待单个对象和组合对象。需要注意的是这里的组合和之前系列中,我们......
  • LNK2005:继承std::string出现的问题
    今天调整合并项目代码时候编译链接时出现问题:errorLNK2005:"public:__cdeclstd::basic_string<char,structstd::char_traits<char>,classstd::allocator<char>>::~......
  • 封装,继承(super,this,方法重写),多态--JAVA
    一、封装封装:就是把抽象出的数据【属性】和对数据的操作【方法】封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作才能对数据进行操作  publicclass......
  • 第11章 面向对象编程:继承(笔记)
    11.1简介为了复用11.2基类和派生类父类与子类11.3基类和派生类之间的关系11.4派生类中的构造函数和析构函数11.5public、protected、private继承权限11.6继承......
  • 继承图
    ......
  • 封装,继承,多态
    super1.super调用父类的构造方法,必须在构造方法第一个2.super必须只能出现在子类的方法或构造方法中3.super和this不能同时调用构造方法Vsthis:代表......
  • 空类与多重继承占用空间大小
    虚继承涉及虚表(虚指针),所以sizeof(C)=81#include<iostream>2usingnamespacestd;34classA{};5classA2{};6classB:publicA7{};89class......
  • js继承链讲解
    构造函数可以制作一个老虎对象js没有类的概念,因此js的继承不是通过类的继承实现的,而是通过原型的概念来实现的//这个构造函数用来制造对象functiontiger(){ this.b......