python中面向对象空间时间_python基础学习Day15 面向对象、类名称空间、对象名称空间 (2)...

一、类

先看一段代码:

classPerson:

animal= '高级动物'walk_way= '直立行走' # 静态属性,静态变量,静态字段language= '语言'

def __init__(self,name,age,work): # 函数 动态属性,方法#print(self)

self.name =name

self.age=age

self.work=workdefeat(self):print('吃吃')defwork(self):print('工作')

obj= Person('alex',25,'it')

class:  类   Person:类名

类:具有相同属性或者功能的一类实物

对象:对象是类的具体体现。

# 结构上理解:面向对象分两个部分,静态属性  动态属性 (属性、方法)

特点:

(1)函数封装一个功能,而面向对象封装多个相关的功能

(2)面向对象是抽象的,它是一种思想,站在上帝的角度去理解他

(3)程序可扩展,对象都是一个个独立的。耦合性,差异性。

类名:

(1)查看类中的所有属性及方法:__dict__

print(Person.__dict__)

print(Person.__dict__['animal'])    # 单独查看某个属性

# 工作中,一般只会用__dict__查看类中的所有属性,不进行其他操作

(2)查看(增删改)类中某个,某些属性,用万能的点'.'

# print(Person.animal) # 查

# Person.name = 'alex' # 增 改

# print(Person.name)

# del Person.walk_way # 删

# print(Person.__dict__)

(3) 函数的操作方法。一般不通过类名来操作

Person.work(666) # 可以操作函数

二、对象

先看代码:

classPerson:

animal= '高级动物'walk_way= '直立行走'language= '语言'

def __init__(self,name,age,work):#print(self)

self.name =name

self.age=age

self.work=workdefeat(self):print('吃吃')defwork(self):print('工作')

obj= Person('alex',25,'it') #这是一个实例化过程,实例化一个内存空间(即对象空间)#print(obj)#print(obj.age)#print(obj.work)#print(obj.name)

obj.hobby = 'tesla'

print(obj.__dict__)

obj.name= 'Chris'

print(obj.__dict__)delobj.workprint(obj.__dict__)

obj.animal= '低等动物'

print(obj.__dict__) #给对象添加了animal的属性

print(Person.__dict__)print(obj.animal)print(Person.animal)#print(obj)

obj.eat()

# 对象

# 对象操作对象空间

#查看所有属性__dict__

# print(obj.__dict__)    #

# 对对象的某个属性  增删改查  万能的点

obj.hobby = 'tesla' # 增

obj.name = 'Chris'  # 改

del obj.work      # 删

print(obj.name)    # 查

类执行的过程图

三、组合

先看代码:

classGamerole:def __init__(self,nickname,ad,hp):

self.nickname=nickname

self.ad=ad

self.hp=hpdef equip_weapon(self, w): #给人物封装了一个武器属性,这个属性值是Weapon的一个对象

self.equip_weapon = w #组合

classWeapon:def __init__(self,name,ad):

self.name=name

self.ad=addeffight(self,role1,role2): # 此时的self为武器的内存地址

role2.hp= role2.hp -self.ad - role1.ad # 此时 role1、role2分别为p1、p2print('%s 用 %s 攻击了%s, %s掉了%s血,还剩%s血'%(role1.nickname,self.name,role2.nickname,role2.nickname,self.ad + role.ad,role2.hp))

p1= Gamerole('盖伦',20,500)

p2= Gamerole('剑豪',100,200)

w1= Weapon('大宝剑',30)

w2= Weapon('武士刀',80)

p2.equip_weapon(w2)

p2.equip_weapon.fight(p2,p1)

结果为:

剑豪 用 武士刀 攻击了盖伦, 盖伦掉了180血,还剩320血

插入解释图片:

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

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

相关文章

Linux GRUB 引导Win 7 ---- error: invalid EFI file path

最近新买了个固态硬盘,先装了个Win 7系统,现在装的系统和以前装系统唯一的区别是引导不是以前的MBR,而是最新看似是个趋势的GPTUEFI方式。 win 7 装完啦,还是和以往的一样装 Ubantu (Ubantu 12.04),ubantu 引导磁盘扇…

其他位不变,具体位的赋值操作

GPIOC (GPIOC & 0xf0) | (Content[s_Index] & 0x0f);        //低四位赋值GPIOB (GPIOB & 0xc3) | ((Content[s_Index]>>2) & 0x3c);     //中间四位赋值 具体某一位置1或取反&#xff1a; 正确写法&#xff1a; 置1:GPIOC | (1<<i…

使用Spring AOP实现活动记录模式

在班级设计中&#xff0c;我们应就每个班级的职责分配做出决定。 如果我们选择的不错&#xff0c;系统将更易于理解&#xff0c;维护和扩展。 几乎我们所有的项目都有一个持久层&#xff0c;即关系数据库&#xff0c;文档存储或仅XML文件。 通常&#xff0c;您将使用DAO模式在业…

Java基础之反射

框架都要用到反射技术&#xff0c;反射都要用到一个类Class. java程序中的各个java类属于同一类事物&#xff0c;描述这类事物的java类名就是Class. 得到字节码的方式有三种&#xff1a; Date.class;new Date().getClass();Class.forName("java.lang.String");最后一…

php socketconnect连接失败_PHP设计模式之模板方法模式

模板方法模式&#xff0c;也是我们经常会在不经意间有会用到的模式之一。这个模式是对继承的最好诠释。当子类中有重复的动作时&#xff0c;将他们提取出来&#xff0c;放在父类中进行统一的处理&#xff0c;这就是模板方法模式的最简单通俗的解释。就像我们平时做项目&#xf…

linux系统硬件配置查看方法

一&#xff1a;查看cpu more /proc/cpuinfo | grep "model name" grep "model name" /proc/cpuinfo 如果觉得需要看的更加舒服 grep "model name" /proc/cpuinfo | cut -f2 -d: 二&#xff1a;查看内存 grep MemTotal /proc/meminfo grep MemT…

java String源码学习

public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence {/**char数组用于字符的存储 */private final char value[];/** 缓存string的hash码 */private int hash; // Default to 0public String() {/**无参构造函数,打印值为&quo…

JBoss AS 7.1.0.Final“ Thunder”发布-Java EE 6 Full Profile认证!

在JBoss AS7上进行了大约一年的开发后&#xff0c;我们现已发布7.1.0.Final“ Thunder” &#xff01; 可从此处的通常位置下载该文件。 对于JBoss AS7团队来说&#xff0c;这是一个非常大的成就&#xff0c;我们为此版本感到非常自豪。 这个版本包含了7.1.0.CR1b的许多错误修复…

数据库建表练习(10.11作业)

转载于:https://www.cnblogs.com/HRZJ/p/5951897.html

天干地支计算公式_天干地支主怎样计算?

回答&#xff1a;少女时代级别&#xff1a;硕士研究生2009-01-08 20:34:04来自&#xff1a;贵州省贵阳市我国古代是用天干地支来纪年的&#xff0c;现代社会已很少使用。一来现今社会已经离不开国际化&#xff0c;沿用老的历法已经不现实&#xff1b;二来天干地支在民间多用于算…

从程序员到CTO的Java技术路线图

时间:2013-05-29 17:39来源:www.chengxuyuans.com在技术方面无论我们怎么学习&#xff0c;总感觉需要提升自已不知道自己处于什么水平了。但如果有清晰的指示图供参考还是非常不错的&#xff0c;这样我们清楚的知道我们大概处于那个阶段和水平。 Java程序员 高级特性 反射、泛型…

Linux的网卡相关

检测linux下网卡是否正常 1.dmesg | grep eth 如果出现以下 eth0: link up 说明是网卡正常的 eth0: registered as PCnet/PCI II 79C970Aeth0: link upeth0: no IPv6 routers present 2.如果所用网卡是pcI总线的 。用命令&#xff1a;lspci 能看到网卡是存在的。 3.用ethtool…

设置Spring 3开发环境

本教程简要说明了如何设置典型的环境来开发基于Spring的应用程序。 除了可以正常工作的Windows XP客户端具有足够的CPU能力和内存外&#xff0c;本教程没有其他先决条件。 在教程中&#xff0c;我们将需要安装以下组件&#xff1a; Java 6 JDK更新26 用于Java EE开发人员的Ecl…

3. 跟踪标记 (Trace Flag) 1204, 1222 抓取死锁信息

跟踪标记&#xff1a;1204/1222 功能及用途&#xff1a; 捕获SQL Server死锁信息&#xff0c;并自动存放到错误日志(ERRORLOG)中。 举例&#xff1a; USE tempdb GO CREATE TABLE t1(id int) INSERT t1 SELECT 1CREATE TABLE t2(id int) INSERT t2 SELECT 1 GO --开启1204/1222…

postgresql建表带注释_postgresql建表带自增id和注释语句

work是表名&#xff0c;nextval(work_myid_seq::regclass)这个是自增id的设置CREATE TABLE "public"."work" ("id" int8 NOT NULL DEFAULT nextval(work_myid_seq::regclass),"wid" int8,"address" varchar(100) COLLATE &q…

js中window.onload 与 jquery中$(document.ready()) 测试

js中window.onload 与 jquery中$(document.ready())区别&#xff0c;验证代码如下(调换js代码和Jquer代码书写顺序测试&#xff0c;运行结果一样&#xff0c;因此与代码书写位置没关系)&#xff1a;<html> <head> <script typetext/javascript srcjquery-1.11.1…

5. Longest Palindromic Substring

更新&#xff1a; 之前那种dp太笨重了有个非常的轻巧的做法&#xff0c;原理都是一样的。 转移方程不变&#xff0c;但是不需要特别的初始化 判断某个格子是不是true&#xff0c;是 1.要么长度小于3&#xff0c;要么dp[start1][end-1]true 2.并且s.charAt(start) s.charAt(end…

Java中的定制国际化(i18n)

国际化&#xff08;i18n&#xff09;在我们的软件项目中非常重要。 它主要带来以下好处&#xff1a; 将UI字符串外部化为除代码文件之外的外部文件&#xff0c;以及易于管理的UI内容。 支持多种语言。 在这篇文章中&#xff0c;将为Eclipse和Java项目提供一个简短的i18n实际示…

SEO 百度后台主动推送链接

实践步骤&#xff0c;先用爬虫程序将本网站的所有连接爬取出来&#xff0c;再用python文件处理程序把爬虫来的东东整理成一行一个链接的文本格式。再用postman接口测试工具&#xff0c;使用post方式&#xff0c;将所有的链接post过去&#xff0c;这样主动推送是最为快速的提交方…

linux版本 如何查kali_000_Kali Linux版本查看和apt源配置

1.查看系统版本# cat /etc/issue# lsb_release -a2.查看内核信息# uname -a3.更新源# cp /etc/apt/source.list{,.bak}# vim /etc/apt/sources.list//备注&#xff1a;国外源速度太慢&#xff0c;这里禁止&#xff1b;网络中的部分源已经过期&#xff0c;建议更换其它源。# kal…