python类与对象的组合与继承
1、把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定。简单的说,组合用于“有一个”的场景中,继承用于“是一个”的场景中。例如,水池里有一个乌龟,天上有一个鸟,地上有一个小甲鱼,这些适合使用组合。青瓜是瓜,女人是人,鲨鱼是鱼,这些就应该使用继承啦实例如下:
class Turtle:
def __init__(self,x):
self.num = x
class Fish:
def __init__(self,x):
self.num = x
class Pool:
def __init__(self, x, y):
self.turtle = Turtle(x)
self.fish = Fish(y)
def print_num(self):
print("水池总共有乌龟 %d 只,小鱼 %d 只" % (self.turtle.num,self.fish.num))
pool = Pool(1,10)
pool.print_num()

2、类、类对象和实例对象
当你这个类定义完的时候,类定义就变成类对象,可以直接通过“类名.属性”或者“类名.方法名()”引用或使用相关的属性或方法。
3、对于类的应用,我们一般不要试图定义出类的所有特性和方法,应该利用继承和组合的机制来进行扩展,另外,我们还可以利用不同的词性来进行命名,对于属性一般是用名词,对于方法名一般用动词。
4、绑定
Python严格要求方法需要有实例才可以被调用,这种限制其实就是python所谓的绑定。

5、在一个类中定义一个变量,用于跟踪该类有多少个实例被创建(当实例化一个对象,这个变量+1,当销毁一个对象,这个变量自动-1):
实现代码如下:
class C:
count = 0
def __init__(self):
C.count += 1
def __del__(self):
C.count -= 1
6、定义一个栈(Stack)类,用于模拟一种具有后进先出(LIFO)特性的数据结构。至少需要有以下方法:
|
方法名 |
含义 |
|
isEmpty() |
判断当前栈是否为空(返回 True 或 False) |
|
push() |
往栈的顶部压入一个数据项 |
|
pop() |
从栈顶弹出一个数据项(并在栈中删除) |
|
top() |
显示当前栈顶的一个数据项 |
|
bottom() |
显示当前栈底的一个数据项 |
实现代码如下:
class Stack:
def __init__(self):
self.stack = []
def Isempty(self):
if len(self.stack) == 0:
self.Isempty1=True
print(self.Isempty1)
else:
self.Isempty1 = False
print(self.Isempty1)
def push(self,x):
self.stack.append(x)
def pop(self,y):
if len(self.stack) == 0:
print("我为空的,不能够弹出")
else:
self.stack.pop(y)
def top(self):
if len(self.stack) == 0:
print("我为空的,不能够弹出")
else:
print(self.stack[len(self.stack)-1])
def bottom(self):
if len(self.stack) == 0:
print("我为空的,不能够弹出")
else:
print(self.stack[0])
a = Stack()
a.Isempty()
a.pop(2)
a.push(3)
a.push(4)
a.push(5)
a.top()
a.bottom()

python类与对象的组合与继承的更多相关文章
- python 类和对象的属性
python类和对象的属性分为类属性和对象属性两大类,类属性属于类,而对象属性属于对象. 1. 父类的对象属性会被子类的对象继承. 2. 父类的类属性会被子类继承,还是作为类属性,如果父类改变了类属性 ...
- 一文讲全了Python 类和对象内容
摘要:这是一个关于 Python 类和对象的全部内容. 本文分享自华为云社区<从零开始学python | Python 类和对象-面向对象编程>,原文作者:Yuchuan . Pytho ...
- python类与对象各个算数运算魔法方法总结
1.python类与对象各个算术运算魔法方法总结: 2.各个魔法方法应用举例: 3.实例训练: (1)我们都知道在 Python 中,两个字符串相加会自动拼接字符串,但遗憾的是两个字符串相减却抛出异常 ...
- python类、对象
python类.对象 学习完本篇,你将会深入掌握 什么是类,对象 了解类和对象之间的关系 能独立创建一个People(人类),属性有姓名.性别.年龄.提供一个有参的构造方法,编写一个show方法,输出 ...
- python面向对象:类空间,对象空间, 组合
一. 类空间,对象空间 1. 类空间,对象空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类有两种属性:静态属性和动态属性 静态属性就是直接在类中定义的变 ...
- python中的类,对象,实例,继承,多态
------------恢复内容开始------------ 类 (通俗来讲是 属性和方法的集合) 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法. 对象,即为类 ...
- python 类和对象
类和对象 类 1.类的组成 数据和函数,二者是类的属性 2.两个作用: 实例化 属性引用 属性引用:类名.属性(增删改查) 实例化: 类名加括号就是实例化,会自动出发__init__的运行 ...
- Python类和对象
目录 类与对象 其他方法 继承 经典类和新式类 派生 组合 接口.归一化设计与抽象类 继承实现的原理 子类中调用父类的方法 指名道姓 super()方法 多态与多态性 封装 单下划线开头 双下划线开头 ...
- python 类,对象
声明类 ''' class 类名: '类的文档字符串' 类体 ''' #我们创建一个类 class Data: pass 声明类 class Person: #定义一个人类 role = 'perso ...
随机推荐
- Python的网络编程 Socket编程
Socket是进程间通信的一种方式,与其他进程间通信的一个主要不同是:能实现不同主机间的进程间通信,网络上各种各样的服务大多都是基于Socket来完成通信的,要解决网络上两台主机间的通信问题,首先要唯 ...
- rimraf命令 递归删除目录所有文件
使用webpack build文件项目时每次都会生成一个dist目录,有时需要把dist目录里的所以旧文件全部删掉, 除了可以使用rm -rf /dist/命令删除外,还可以使用rimraf /dis ...
- Angular 星级评分组件
一.需求演变及描述: 1. 有一个“客户对公司的总体评价”的字段(evalutation).字段为枚举类型,0-5,对应关系为:0-暂无评价,1-很差,2-差,3-一般,4-好,5-很好 2. 后来需 ...
- linux 字体 设置 en_US.UTF-8
设置:localectl set-local LANG=en_US.UTF-8 查看: localectl list-locales
- jQuery放大镜插件
(function($) { $.fn.magnifier = function(options){ var options = $.extend({ bigWidth: 400, //大图高度 bi ...
- [luogu2680] 运输计划
题面 很明显, 由于是求最长路的最小值, 我们可以使用二分求解. 我们二分一个长度\(mid\), 将所有使得\(dis(u, v)\)大于\(mid\)的点对\((u, v)\)找出, 设总共有 ...
- 详解 MNIST 数据集
转自:https://blog.csdn.net/simple_the_best/article/details/75267863 MNIST 数据集已经是一个被”嚼烂”了的数据集, 很多教程都会对它 ...
- ruby安装及webStorm配置SCSS
sass安装: 步骤:(window系统) 1.下载RubyInstaller(v2.4.3),运行安装,基本直接next安装,不过有个add to PATH的选项一定要勾选,这样就不用配置环境变量. ...
- 2018-2019赛季最后的随想/$\rm{NOIP2018}$游记·启示录
他看着眼前的屏幕,静静地发呆. 他不知道迎接他的将会是什么,后天的\(\rm{NOIp}\)终究是个谜. 刚刚给机房里其他人讲完期望的他,打心底觉得自己没有讲好,但效果似乎还可以. "希望别 ...
- mybatis框架下使用generator插件自动生成domain/mapping/mapper
手动去创建domain/mapping/mapper费时费力还容易出错,用插件自动生成非常的方便. 这里以MySQL数据库为例,也可以改成Oracle,改成相应的驱动和URL即可. 下载generat ...