python摸爬滚打之day17----类与类之间的关系
1、类与类之间的联系
1.1 依赖关系
类A中使用了类B, 类B作为参数传进类A的方法中被使用. 这种关系中类与类之间的联系是最轻的.
class Elephant:
def open(self,ele): # ele 接收的是一个BingXiang的对象
print("我是大象,我会开门")
ele.kai()
def jinqu(self):
print("我是大象,我会自己进封闭容器")
def close(self,ele):
print("我是大象,我会关门")
ele.guan()
class BingXiang:
def kai(self):
print("我是冰箱,我会替别人开门")
def guan(self):
print("我是冰箱,我会替别人关门")
class DianFanBao:
def kai(self):
print("我是电饭煲,我会替别人开门")
def guan(self):
print("我是电饭煲,我会替别人关门")
bx = BingXiang()
dfb = DianFanBao()
e = Elephant()
e.open(bx)
e.jinqu()
e.close(dfb)
依赖关系
1.2 关联关系(组合关系,聚合关系)
三种关系写法是一样的, 但意义是不一样的.
关联关系: 类A和类B是互相关联的, 类A中使用了类B, 类B成为类A中的属性或成员. 关系程度要比依赖关系强点.
class Teacher:
def __init__(self,name,lst=None):
self.name = name
if lst == None:
self.lst = []
else:
self.lst = lst
def add_sd(self,obj):
self.lst.append(obj) # 将这几个学生对象添加进self.lst这个老师类的字段中,成为该属性的一部分.
class Student:
def __init__(self,name,numb,score):
self.name = name
self.numb = numb
self.score = score
s1 = Student("王大锤",1001,95)
s2 = Student("李二炮",1003,90)
s3 = Student("马老五",1004,88)
t = Teacher("张老师",[Student("二壮",1010,99)])
t.add_sd(s1)
t.add_sd(s2)
t.add_sd(s3)
for i in t.lst:
print(i.name)
关联关系
1.3 继承关系
见后续.
2、特殊成员方法
__new__() 构造方法, 在创建对象内存时调用.
__init__() 初始化方法, 往创建好的对象内存里存数据
__call__() 对象()时会被调用.
__dict__() 将类或者对象内存空间里的全部属性打包成字典的形式.
类: 有各种内部属性, 内部方法和一些静态字段, 方法之类的.
对象: 在自己的内存空间里只有自己的字段.
__str__() 在打印一个对象时默认会执行__str__()方法, 根据返回的结果进行打印.
__int__() 数据int()调用
__repr__() 一个字符串的官方表示形式
__getitem__() 对象[key]自动调用
__setitem__() 对象[key] = value自动调用
__delitem__() del 对象[key]时调用
__enter__() with打开文件时调用
__exit__() with关闭文件时调用
__add__() 两个对象相加
__len__() len(对象)时调用
__iter__() for循环时调用
__hash__() 哈希时调用
__lt__() 小于
__gt__() 大于
__le__() 小于等于
__ge__() 大于等于
__del__() 析构(删除清空对象)
python摸爬滚打之day17----类与类之间的关系的更多相关文章
- Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系
Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...
- python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系
https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...
- PHP类和对象之间的关系
类是对象的描述: 类和对象之间的关系类似于建房子的图纸和房子: 创建类--new对象--用对象: 一.对象的两个特性: --对象的行为(功能):可以对对象施加操作,例如,电视机的开.关.转换频道: - ...
- JAVA面向对象-----接口与类、接口之间的关系
接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...
- UML图类,接口之间的关系
UML图类之间的关系(来自大话设计模式中的一张图,代表了类,接口之间的各种关系)
- python中,ascii,unicode,utf8,gbk之间的关系梳理
在计算机中,经常遇到编码问题,本节主要梳理下ascii,unicode,utf8,gbk 这几种编码之间的关系. ASCII 计算机中,所有数据都以0和1来表示.在一开始的时候,要表示的内容比较少,人 ...
- python中type、class、object之间的关系
先看一段代码 # -*- coding:UTF-8 -*- __autor__ = 'zhouli' __date__ = '2018/11/13 18:40' a = 1 b = 'abc' pri ...
- 关于package,import,和“找不到可以加载的主类”报错之间的关系
正在回顾java基础 目录结构如下: 一 以下代码,进入Example所在的文件夹, javac和java都不会报错 public class Example{ public static void ...
- Java 中判断类和实例之间的关系
判断类与实例的关系有以下三种方式 1.instanceof关键字,用来判断对象是否是类的实例 (对象 => 类 ) 2.isAssignableFrom,用来判断类型间是否存在派生关系 (类 ...
- C# 多线程 类构造函数 类方法之间的关系
先定一个类,既有构造函数又有类方法: public class WriteNumber { /// <summary> /// 构造函数 /// </summary> publ ...
随机推荐
- Navicat Premium 12破解方法
来源网址:https://www.jianshu.com/p/42a33b0dda9c 1.按步骤安装Navicat Premium,如果没有可以去官网下载:http://www.navicat.co ...
- invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Mac系统升级git会找不到并且报错:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools) ...
- tensorflow 笔记14:tf.expand_dims和tf.squeeze函数
tf.expand_dims和tf.squeeze函数 一.tf.expand_dims() Function tf.expand_dims(input, axis=None, name=None, ...
- Python生成随机字符串
利用Python生成随机域名等随机字符串. #!/usr/bin/env python# -*- coding: utf-8 -*- from random import randrange, cho ...
- (转)创建Windows服务(Windows Services)N种方式总结
转自:http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html 最近由于工作需要,写了一些windows服务程序,有一些经验,我现在 ...
- 3.静态AOP实现-代理模式
通过代理模式实现在RegUser()方法本身业务前后加上一些自己的功能,如:BeforeProceed和AfterProceed,即不修改UserProcessor类又能增加新功能 定义1个用户接口, ...
- 加速Windows 2003关机速度的设置方法
indows 2003是目前版本最高的Windows操作系统,虽然其功能比历史上任何一个版都要强,但是其关机操作却给大家带来了一些小麻烦.其实我们完全可以解除这些麻烦,让关机加速 一.关闭关机事件 ...
- ELK日志收集
目前日志的痛点 运维要经常登陆到服务器上拿日志给开发.测试 每次都是出问题后才去看日志,不能提前通过日志预判问题 如果是集群服务,日志将要从多台机器取 开发人员搞出来的日志不规范,没有标准.日志目录不 ...
- 135、JS和Android交互范例
很简单的直接上代码 <uses-permission android:name="android.permission.INTERNET" /> assets/web. ...
- 理解面向过程(OPP)、面向对象(OOP)、面向切面(AOP)
概念 面向过程编程OPP:Procedure Oriented Programming,是一种以事物为中心的编程思想.主要关注“怎么做”,即完成任务的具体细节. 面向对象编程OOP:Object Or ...