linux 封装python,基于linux下python学习(封装)

一、面向对象

类的设计:在程序开发中,要设计一个类,通常需要满足以下三个要求:

1、类名  这类事物的名字,满足大驼峰命名法

2、属性 这类事物具有什么样的特征

3、 方法  这类事物具有什么样的行为

eg:小明今年18岁,身高1.75,每天早上要跑步,会去吃东西

类名:Person()  属性:name,age,height    方法:run() eat()

(1)

# 小猫爱吃鱼,小猫要喝水

class  Cat():

def eat(self):

print '小猫爱吃鱼'

def  drink(self):

print '小猫要喝水'

tom = Cat()     # 创建猫对象

tom.eat()

tom.drink()

# 小狗爱睡觉,小狗爱吃肉

class  Dog():

def sleep(self):

print '小狗爱睡觉'

def eat(self):

print '小狗爱吃肉'

xiaoxiao = Dog()

xiaoxiao.sleep()

xiaoxiao.eat()

446644e51d95b5ec2f6a39a7c37d7909.png

(2)

class  Dog():

def sleep(self):

print '小狗爱睡觉'

def eat(self):

print '小狗爱吃肉'

xiaoxiao = Dog()

xiaoxiao.name = 'xiaoxiao'

xiaoxiao.sleep()

xiaoxiao.eat()

print xiaoxiao

# addr = id(xiaoxiao)

# print '%x' %addr

# print '%d' %addr

#再创建一个狗对象

benben = Dog()

benben.name = 'benben'

benben.eat()

benben.sleep()

print  benben

e19b5a5e6091e0005d981f146ee3c8af.png

(3)

初始化方法

我们已经知道了使用类名() 就可以创建一个对象

当使用类名()创建对象时,python的解释器会自动执行以下操作:

1、为对象在内存中分配空间 --创建对象

2、调用初始化方法为对象的属性设置初始值   初始化方法(__init__)这个初始化方法就是__init__方法,是对象的内置方法

专门是用来定义一个类具有那些属性的方法

class  Dog():

def  __init__(self,new_name):

self.name = new_name

def sleep(self):

print '%s 爱睡觉'  % self.name

xiaoxiao = Dog('xiaoxiao')   # 使用类名()创建对象的时候,会自动调用初始化方法__init__

print xiaoxiao.name

xiaoxiao.sleep()

benben = Dog('benben')

benben.sleep()

e71c31645a82b704068ac2fe3da98441.png

二、内置方法

(1)__del__

1、在python中

当使用类名()创建对象时,为对象分配万空间后,自动调用__init__

当一个对象被从内存中销毁前,会自动调用__del__方法

"""

class Dog():

def __init__(self,new_name):

self.name = new_name

print '%s 来了' %self.name

def __del__(self):

print '%s 走了' %self.name

xiaoxiao = Dog('xiaoxiao')

print xiaoxiao.name

print '_' * 50

9a3976eaba6598d77401d2ed03597532.png

2、

class Dog():

def __init__(self,new_name):

self.name = new_name

print '%s 来了' %self.name

def __del__(self):

print '%s 走了' %self.name

xiaoxiao = Dog('xiaoxiao')

print xiaoxiao.name

del xiaoxiao

print '_' * 50

828d82e086b636b8209a0fc612a17b04.png

(2)__str__

1、在python中,使用python输出对象变量

默认情况下,会输出这个变量引用的对象是由哪一个类创建的对象

以及在内存中的地址(十六进制表示)

如果在开发中,希望使用print输出对象变量时

能够打印自定义的内容,就可以利用__str__这个内置方法了

"""

class Dog():

def __init__(self,name):

self.name = name

tom = Dog('tom')

print tom

2、

class Dog():

def __init__(self,name):

self.name = name

def __str__(self): #必须返回一个字符串

return '我是%s' %self.name

tom = Dog('tom')

print tom

b4e151fd240e1ce1ecd2c94b04efaaf2.png

三、封装

1、封装是面向对象编程的一大特点

2、面向对象编程的第一步,将属性和方法封装到一个抽象的类中

3、外界使用类创建对象,然后让对象调用方法

4、对象方法的细节都被封装在类的内部

(1)

需求:

1、tom和xiaoxiao都爱吃东西爱跑步

2、tom体重75

3、xiaoxiao体重50

4、每次跑步都会减少0.5公斤

5、每次吃东西都会增加1公斤

"""

class person():

def __init__(self, name,weight):

self.name = name

self.weight =weight

def __str__(self):

return '我的名字叫%s,体重是%.2f' %(self.name,self.weight)

def  run(self):

print '%s 爱跑步' % self.name

self.weight -= 0.5    # 在对象的方法内部,是可以直接访问对象的属性

def  eat(self):

print '%s 爱吃' % self.name

self.weight += 1.0

tom = person('tom',75.0)

tom.run()

tom.eat()

print tom

xiaoxiao = person('xiaoxiao',50.0)

xiaoxiao.run()

xiaoxiao.eat()

print xiaoxiao

f385d9c815526ee64453fc0c53e12e29.png

(2)

需求:

1、房子有户型,总面积和家具名称列表

新房子没有任何的家具

2、家具有名字和占地面积,其中

床:占4平方

衣柜:占2平方

餐桌:占1.5平方

3、将以上三件家具添加到房子中

4、打印房子时,要求输出:户型,总面积,剩余面积,家具名称列表

"""

class  HouseItem():

def __init__(self, name,square):

self.name = name

self.square = square

def __str__(self): #必须返回一个字符串

return '%s的占地面积为%.2f' %(self.name,self.square)

chuang= HouseItem ('chuang',4)

print chuang

yigui = HouseItem('yigui',2)

print yigui

canzhuo =HouseItem('canzhuo',1.5)

class  House():

def __init__(self,huxing,square):

self.huxing = huxing

self.square = square

self.free_square = square   # 剩余面积

self.item_list = []         # 家具名称列表

def __str__(self):

return '户型:%s\n总面积:%.2f\n剩余面积:%.2f\n家具列表:%s' % (self.huxing,self.square,self.free_square,self.item_list)

def  add_item(self,item):

print '要添加的家具%s' % item

if item.square > self.free_square:

print '%s面积太大无法添加' %item.square

return

self.item_list.append(item.name)

self.free_square -=item.square

my_home = House('两室一厅',180)  # 创建房子

# 添加家具

my_home.add_item(chuang)

my_home.add_item(yigui)

my_home.add_item(canzhuo)

print my_home

2c144e3841ad229fe123522aea0ba040.png

(3)

1、士兵瑞恩有一把AK47

2、士兵可以开火

3、枪能够发射子弹

4、枪能够装填子弹(增加子弹的数量)

class  Gun():

def __init__(self,model):

self.model = model  #  枪的型号

self.bullet_count = 0   #子弹的数量

def  add_bullet(self,count):

self.bullet_count += count

def shoot(self):

if self.bullet_count <= 0:  #  判断子弹的数量

print '没有子弹了'

self.bullet_count -= 1   #发射子弹

print '%s 突突突 %d' %(self.model,self.bullet_count)

class  Soldier():

def  __init__(self,name):

self.name = name

self.gun = None

def fire(self):

if self.gun == None:

print  '%s没有枪' %self.name

return

print 'go!!!'

self.gun.add_bullet(50)

self.gun.shoot()

ak47 = Gun('ak47')

ak47.add_bullet(50)

ak47.shoot()

ryan = Soldier('Ryan')

ryan.gun = ak47

ryan.fire()

print  ryan.gun

69d3815c70cfcaa251d6c933f5cfe0a9.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图解RAID 0, RAID 1, RAID 5, RAID 10

RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出&#xff0c;最初是为了组合小的廉价磁盘来代替大的昂贵磁盘&#xff0c;同时希望磁盘失效时不会使对数据的访问受损 失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价…

Spring JPA 中的Repository体系

为什么80%的码农都做不了架构师&#xff1f;>>> Repository体系 org.springframework.data.repository.Repository<T, ID> ---- Repository体系的顶级接口,是个空接口 interface CrudRepository<T, ID extends Serializable> extends Repository<T,…

Codeforces 258B Little Elephant and Elections

题意&#xff1a;有7个人从m个数中任选一个不重复的&#xff0c;其中4和7是幸运数&#xff0c;一个人的幸运值等于他所选的数字中所有4的个数7的个数。求一个人的幸运值比其他6人幸运值总和大的方案数。 1 #include <iostream>2 #define MOD 10000000073 using namespace…

Python 数据分析 Matplotlib篇 plot设置线条样式(第2讲)

Python 数据分析 Matplotlib篇 plot设置线条样式(第2讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ�…

装 linux后 win7消失了,win7系统重装后ubuntu启动消失不见的解决方法

很多小伙伴都遇到过win7系统重装后ubuntu启动消失不见的困惑吧&#xff0c;一些朋友看过网上零散的win7系统重装后ubuntu启动消失不见的处理方法&#xff0c;并没有完完全全明白win7系统重装后ubuntu启动消失不见是如何解决的&#xff0c;今天小编准备了简单的解决办法&#xf…

linux虚拟主机泛解析,Apache虚拟主机的配置和泛域名解析实现代码

Apache虚拟主机的配置和泛域名解析实现代码更新时间&#xff1a;2012年03月11日 00:28:19 作者&#xff1a;Apache虚拟主机的配置和泛域名解析实现代码&#xff0c;需要的朋友可以参考下虚拟主机的配置基于IP地址的虚拟主机配置Listen 80DocumentRoot /www/jb51ServerName ww…

socket用法linux,linux socket编程,要用到哪些函数,和用法介绍?_Linux_天涯问答_天涯社区...

4、获得地址信息/* 来源: http://www.jfox.info/c/a/ic/18071a.html */#include #include /* for strncpy */#include #include #include #include #include intmain(){int fd;struct ifreq ifr;fd socket(AF_INET, SOCK_DGRAM, 0);/* I want to get an IPv4 IP address */if…

图灵访谈系列之一:陈世欣谈产品经理与社区

原文链接地址&#xff1a;点击打开链接 10月20日&#xff0c;产品经理社区PMCamp、极客社区TopGeek的发起者和组织者陈世欣先生来图灵做客&#xff0c;畅谈对产品经理成长和社区发展的看法。以下为图灵社区整理的相关谈话内容。 人物简介&#xff1a; 陈世欣 StingChen产品经理…

Jenkins 使用 maven 出现C:\Windows\system32\config\systemprofile的解决

jenkins 使用 maven 出现 C:\Windows\system32\config\systemprofile 的原因是 Jenkins 服务启动的账号使用了系统的账号&#xff0c;在服务里改成具体的桌面用户账号即可。 If your command runs fine on Win command prompt as user X, then you should run Jenkins with the…

在Linux下用源码编译安装apache2

Linux下安装一个软件&#xff0c;最好去看下它的官方guide&#xff0c;apache2.4的安装安装guide 0. installation guide http://httpd.apache.org/docs/2.4/install.html 然后是下载源码 1. download http2.4&#xff0c; 下载地址 下载好了以后&#xff0c;把它解压到一个路…

c语言第十五周答案,C语言考前练习试题及答案

C语言考前练习试题及答案天行健&#xff0c;君子以自強不息&#xff0c;地勢坤&#xff0c;君子以厚德载物。以下是小编为大家搜索整理的C语言考前练习试题及答案&#xff0c;希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!一、选择题(每小题1分&#xff0…

数字编码电位器c语言,数字电位器——x9c104

一些传统的电子设备是通过改变电位器的电阻来实现调整&#xff0c;比如灯的亮度、电机的转速等。如果想对这种设备进行智能改造但不大幅度改变设备内部的电器结构&#xff0c;我们需要电位器的电阻可通过单片机或微机进行控制&#xff0c;数字电位器就是这类设备。“我也是在项…

13.  Roman to Integer

2019独角兽企业重金招聘Python工程师标准>>> 见12转载于:https://my.oschina.net/datacube/blog/702856

SharePoint2010沙盒解决方案基础开发——开发webpart读取绑定列表数据,并以一定的格式显示(加css样式)...

SharePoint2010沙盒解决方案基础开发——开发webpart读取绑定列表数据&#xff0c;并以一定的格式显示&#xff08;加css样式&#xff09; 注&#xff1a;此实例无需添加数据控件&#xff0c;避免了一些繁琐的代码 实现效果如下&#xff1a; 读取数据和图片&#xff0c;并以每行…

c语言离散卷积编程,数电实验一 离散卷积的C语言编程.ppt

数电实验一 离散卷积的C语言编程.ppt实验一 离散卷积的C语言编程实验,DSP实验室,实验性质,综合设计性实验,实验目的,1 了解和认识常用的各种信号&#xff1b; 2 掌握卷积的定义和计算方法&#xff1b; 3 掌握在计算机中生成以及绘制信号序列图的方法。,实验原理,离散时间系统中…

irq4中断子程序c语言写法,AVR汇编程序参考

该AVR的汇编程序选自《M128》&#xff0c;程序中体现了AVR汇编的基本特点&#xff0c;仅供大家参考。该应用系统为一个带1/100秒的简易24小时制时钟&#xff0c;它在上电后能够自动从11时59分55秒00开始计时和显示时间。下图为简易时钟系统硬件电路图。图 简易24小时时钟硬件原…

一步一步学Silverlight 2系列(6):键盘事件处理

一步一步学Silverlight 2系列&#xff08;6&#xff09;&#xff1a;键盘事件处理 概述 Silverlight 2 Beta 1版本发布了&#xff0c;无论从Runtime还是Tools都给我们带来了很多的惊喜&#xff0c;如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython&#xff0c;对J…

块分割,维特比算法小结

学习总结 在ER中&#xff0c;有一类算法依靠参考结构化数据库的模型实现&#xff0c;以便提高ER的速度。但是这类算法常常在运行中产生了大量重复计算&#xff0c;降低了效率。由此&#xff0c;通过介绍以下方法&#xff0c;来解决这个问题&#xff1a; 块分割 给定的字符串&am…

关于URL编码

一、问题的由来 URL就是网址&#xff0c;只要上网&#xff0c;就一定会用到。 一般来说&#xff0c;URL只能使用英文字母、阿拉伯数字和某些标点符号&#xff0c;不能使用其他文字和符号。比如&#xff0c;世界上有英文字母的网址 “http://www.abc.com”&#xff0c;但是没有希…

android应用开发全程实录-实现甩动拨打和挂断电话

今天继续给大家带来《Android应用开发全程实录》中的章节&#xff0c;这部分是讲传感器中的一个实例。 通过上面的例子我们学会了如何获得某种类型的传感器&#xff0c;下面通过一个实例来学习如何使用某一个类型的传感器。我们以加速传感器为例&#xff0c;来实现这样一个功能…