python 类组合

在使用一款云产品的python sdk过程中,发现了python类之间调用的另一种少见方法:类组合,那么类组合是用来干吗的呢?

我们知道,在python中,类之间的相互调用,我们习惯性的采用继承的方法,但是 除了继承方法,我们还可以采用类组合的方式来调用另一个类 官方的说法:让不同的类混合并加入到其他类中,来增强功能和代码重用性。你可以在一个大点的类中创建你自己的类的实例,实现一些其他属性和方法来增强原来的类对象。

举个例子:

>>> class Name(object):  
        def __init__(self, nm):
        self.name = nm
    
>>> class Phone(object):  
        def __init__(self, ph):
        self.phone = ph
    
>>> class NewAddrBookEntry(object):  
        def __init__(self, nm, ph):
        self.name = Name(nm)
        self.phone = Phone(ph)    
        print ‘Created instance for:‘, self.name    
        print ‘Created instance for:‘, self.name.name
>>> foo = NewAddrBookEntry(‘Paul‘, 123456)
Created instance for: <__main__.Name object at 0x02B75FD0>
Created instance for: Paul

类NewAddrBookEntry 的初始化方法分别调用了类Name和类Phone.

当然,类组合也有它的适用场景:当类和类之间有显著的不同,并且(较小的类)是较大的类所需要的组件时,使用类组合是更好的选择,否则,继承是更合适的方法

时间: 2024-10-01 23:52:36

python 类组合的相关文章

python 类知识点总结

python 类知识点总结 面向对象思想: 1.设计的时候,一定要明确应用场景 2.由对象分析定义类的时候,找不到共同特征和技能不用强求 1.简述类.对象.实例化.实例这些名词的含义: 类:从一组对象中提取对象共同的特征和属性,构成一个类. 对象:具有数据属性和函数属性的集合体 实例化:由类生成一个对象的方法,就是实例化 实例:类的实例化就会产生一个实例(对象) 类: 对象就是类的抽象 类实例成对象的过程就是实例化 实例就是对象 2.面向对象的三大特性是什么? 继承,多态,封装 3.什么是方法?

Python面向对象 | 组合

软件重用的重要方式,除了继承之外还有另外一种方式,即:组合 一.对象之间的交互 方法可以传参,参数可以是对象. class Person: role = 'person' def __init__(self, name, sex, hp, ad): self.name = name self.sex = sex self.hp = hp self.ad = ad def attack(self,dog): dog.hp -= self.ad print('%s攻击了%s,%s掉了%s点血' %

python类讲解

Python里的所有数据都是以对象形式存在的,无论是的简单的数字类型还是复杂的代码模块.然而,Python特殊的语法形式巧妙地将实现对象机制的大量细节隐藏起来.输入 num = 1 就可以创建一个值为 1 的整数对象,并且将这个对象值赋值给变量num.事实上,在Python中,只有当你想要创建属于自己的对象或者需要修改已有的对象的行为时,才需要关注对象的内部实现细节. 对象既包含数据(变量,更习惯称之为特性,attribute),也包含代码(函数,也成为方法).它是某一类具体事务的特殊实例.例如

【Python&amp;数据结构】 抽象数据类型 Python类机制和异常

这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Python编程,借着本次机会仔细学习一下. 抽象数据类型 最开始的计算机语言,关注的都是如何更加有效率地计算,可以说其目的是计算层面的抽象.然而随着这个行业的不断发展,计算机不仅仅用于计算,开发也不仅只关注计算过程了,数据层面的抽象也变得同样重要.虽然计算机语言一开始就有对数据的抽象,但是那些都只是对一些最基本的

第六章 Python类(面向对象编程)

什么是面向对象编程? 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构.Python就是这种编程语言. 面向对象程序设计中的概念主要包括:对象.类.继承.动态绑定.封装.多态性.消息传递.方法. 1)对象:类的实体,比如一个人. 2)类:一个共享相同结构和行为的对象的集合.通俗的讲就是分类,比如人是一类,动物是一类. 3)继承:类之间的关系,比如猫狗是一类,他们都有四条腿,狗继承了这个四条腿,拥有了这个属性. 4)动态绑定:在不

Python类属性访问的魔法方法

Python类属性访问的魔法方法: 1. __getattr__(self, name)- 定义当用户试图获取一个不存在的属性时的行为 2. __getattribute__(self, name)- 定义当该类的属性被访问时的行为 注意:当__getattr__与__getattribute__同时重写时,访问属性时,优先调用__getattribute__,只有当被访问的属性不存在时才触发__getattr__ 3. __setattr__(self, name, value)- 定义当一个

LightMysql:为方便操作MySQL而封装的Python类

原文链接:http://www.danfengcao.info/python/2015/12/26/lightweight-python-mysql-class.html mysqldb是Python操作MySQL数据库的一个常用包.但在使用过程中,我认为用起来还不够简便.为此,我在mysqldb的基础上封装了一个Python类LightMysql. 先来看如何使用 example.py #!/usr/bin/env python # -*- coding: utf-8 -*- from Lig

python类的继承

Python 类的一些基本概念 Python中一切皆对象,声明变量函数等的过程实际上就是它们到内存中为对象分配的空间的连接.Python中的类同Java.C++一样,有自己的属性与方法.属于一个对象或类的变量被称为域. 域有两种类型--属于每个实例/类的对象或属于类本身,它们分别被称为实例变量和类变量. 类的变量 由一个类的所有对象(实例)共享使用.所有对象共用一个类变量的拷贝.对象的变量 由类的每个对象/实例拥有.因此每个对象有自己对这个域的一份拷贝. 类的方法与普通的函数只有一个特别的区别-

C++类组合问题

#include <iostream> using namespace std; class Vehicle { public: Vehicle(float speed=0,int total=0) { Vehicle::speed = speed; Vehicle::total = total; } protected: float speed;//速度 int total;//最大载人量 }; class Motor { public: Motor(char *motor) { Motor