Python进阶-----类的组合

  定义一个人的类,人有头、躯干、手、脚等数据属性,这几个属性又可以是通过一个类实例化的对象,这就是组合
 1 class Hand:
 2     pass
 3 class Foot:
 4     pass
 5 class Trunk:
 6     pass
 7 class Head:
 8     pass
 9
10 class Person:
11     def __init__(self,id_num,name):
12         self.id_num = id_num
13         self.name = name
14         self.hand = Hand()
15         self.foot = Foot()
16         self.trunk = Trunk()
17         self.head = Head()
18 #通过上例可以发现,可以将单独的类组合在一起放入到Person这个大类里
19 p = Person(‘6125221111111‘,‘Meanwey‘)
20 print(p.__dict__)

原文地址:https://www.cnblogs.com/Meanwey/p/9788719.html

时间: 2024-10-12 11:12:11

Python进阶-----类的组合的相关文章

Python进阶-----类组合的方式完成授权

授权:授权是包装的一个特性, 包装一个类型通常是对已存在的类型的一些定制,这种做法可以新建,修改或删除原有产品的功能.其它的则保持原样.授权的过程,即是所有更新的功能都是由新类的某部分来处理,但已存在的功能就授权给对象的默认属性. import time class FileHandle: def __init__(self,filename,mode = 'r',encoding = 'utf-8'): self.file = open(filename,mode,encoding=encod

Python进阶-----类的装饰器及应用

回顾什么是装饰器: 装饰器定义:本质就是函数(高阶函数),功能是为其他函数(对象)添加新功能 一.类的装饰器基本实现原理如下: 1 def deco(cls): 2 print('类的装饰器=========>') 3 print('='*20) 4 return cls 5 6 @deco #====> Foo = deco(Foo) 7 class Foo: 8 pass 二.上述的简单装饰器是没有参数的,现在我们加上参数 1 def cls_decorator(**kwargs): #支

Python进阶-----类的内置item属性方法

类的内置item相关方法只有在通过字典key操作才会触发而通过点的方式来操作,则触发attr相关方法 class Foo: def __init__(self,name,age): self.name = name self.age = age def __getitem__(self, item): print('执行getitem') return self.__dict__[item] def __setitem__(self, key, value): print('执行setitem'

Python进阶-----类的内置方法__getattribute__

__getattribute__ 方法功能: 1 调用属性会触发该功能,属性存在则会返回相应的值:2 如果属性不存在则会抛出异常AttributeError,所以可以自定义异常信息3 存在__getattr__,若有异常出现则会传递给__getattr__用来接收,执行操作 class Foo: def __init__(self,x): self.x=x def __getattr__(self, item): print('执行的是我') # return self.__dict__[ite

Python进阶-----类继承的方式完成包装

包装:python为大家提供了标准数据类型,以及丰富的内置方法,其实在很多场景下我们都需要基于标准数据类型来定制我们自己的数据类型,新增/改写方法,这就用到了我们刚学的继承/派生知识(其他的标准类型均可以通过下面的方式进行二次加工) class List(list): #继承list所有的属性,也可以派生出自己新的,比如append和mid def append(self, p_object): ' 派生自己的append:加上类型检查' if not isinstance(p_object,i

Python学习之旅—面向对象进阶知识:类的命名空间,类的组合与继承

前言 上篇博客笔者带领大家初步梳理了Python面向对象的基础知识,本篇博客将专注于解决三个知识点:类的命名空间,类的组合以及面向对象的三大特性之一继承,一起跟随笔者老看看今天的内容吧. 1.类的命名空间 在上一篇博客中,我们提到过对象可以动态添加属性,一起来回忆下昨天的知识点,看如下的代码: class A: pass a = A() a.name = 'alex' print(a.name) 这里我们手动为a对象添加了一个属性name,然后直接打印可以得到a对象的名称.通过这个例子,我们可以

python进阶(5):组合,继承

前两天我们认识了面向对象也对面向对象有了初步的认识今天我们先会说一点组合的进阶,今天重点是继承. 一.组合 组合只有一个例子因为组合只作为上一章的补充内容 #老师 课程 生日 class Course: def __init__(self,name,period,price): self.name = name self.period = period self.price = price class Birth: def __init__(self,year,month,day): self.

【python进阶】详解元类及其应用2

前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使?type创建带有?法的类 最终你会希望为你的类增加?法.只需要定义?个有着恰当签名的函数并将 其作为属性赋值就可以了.添加实例?法 In [14]: def echo_bar(self):#定义了一个普通的函数 ...: print(self.bar) ...: In [15]: FooChild = type('

python类的组合

类的组合,即在类实例化时,将另一个类的实例作为参数传入,这样可以将两个实例关联起来. 当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好. 例如,描述一个机器人类,这个大类是由很多互不相关的小类组成,如机械胳膊类.腿类.电池类等. 当类之间有很多相同的属性,提取这些统统的属性做成基类,用继承比较好. class course: def __init__(self,name,price,period,teacher): self.name=name self.price=pri