第七节

类的方法

1.静态方法

class Dog(object):    def __init__(self,name):        self.name = name

@staticmethod    def eat(self):        print("%s is eating %s" % (self.name,"apple"))

def talk(self):        print("%s is talking"% self.name)

ainemo=Dog("tom")ainemo.eat(ainemo)ainemo.talk()#只是名义上归类管理,实际上在静态方法里访问不了实例中的任何属性

显示结果:tom is eating appletom is talking

2.类方法

class Dog(object):    name = "jack"   #只有类变量才能在“类方法”中起作用    def __init__(self,name):        self.name = name    #实例变量不起作用

@classmethod    def eat(self):        print("%s is eating %s" % (self.name,"apple"))

def talk(self):        print("%s is talking"% self.name)

d=Dog("tom")d.eat()

#只能访问类变量,不能访问实例变量显示结果:jack is eating apple

3.属性方法

class Dog(object):    def __init__(self,name):        self.name = name        self.__food = None

@property   #attribute    def eat(self):        print("%s is eating %s" % (self.name,self.__food))

@eat.setter    def eat(self,food):        print("food is %s" % food)        #print("修改成功,%s is eating %s" % (self.name,food))        self.__food = food

@eat.deleter    def eat(self):        del self.__food        print("删完了")

def talk(self):        print("%s is talking"% self.name)

d=Dog("tom")d.eatd.eat="banana"d.eat#del d.eat  #会报错,因为将self.__food整个变量删除了#d.eat   

#把一个方法变成一个静态属性显示结果:tom is eating Nonefood is bananatom is eating banana

4.反射

1.hasattr

class Dog(object):    def __init__(self,name):        self.name = name

def bulk(self):        print("%s is yelling....." % self.name)

def run(self):        print("%s is running....." % self.name)

d = Dog("tom")choice = input(">>:").strip()print(hasattr(d,choice))
显示结果:>>:runTrue

2.getattr
class Dog(object):    def __init__(self,name):        self.name = name

def bulk(self):        print("%s is yelling....." % self.name)

def run(self):        print("%s is running....." % self.name)

d = Dog("tom")choice = input(">>:").strip()# print(hasattr(d,choice))#print(getattr(d,choice))getattr(d,choice)()

显示结果:>>:run<bound method Dog.run of <__main__.Dog object at 0x000000B2BFDC98D0>>tom is running.....

3.setattr
def eat(self):    print("%s is eating....." %self.name)

class Dog(object):    def __init__(self,name):        self.name = name

def bulk(self):        print("%s is yelling....." % self.name)

def run(self):        print("%s is running....." % self.name)

d = Dog("tom")choice = input(">>:").strip()# print(hasattr(d,choice))## print(getattr(d,choice))# getattr(d,choice)()

if hasattr(d,choice):    # attr = getattr(d,choice)    setattr(d,choice,"jack")    print(getattr(d,choice))else:    setattr(d,choice,eat)    print(getattr(d,choice))    d.eat(d)

显示结果:>>:eat<function eat at 0x000000C37E183E18>tom is eating....




				
时间: 2024-10-11 14:53:33

第七节的相关文章

基于Extjs的web表单设计器 第七节——取数公式设计之取数公式的使用

基于Extjs的web表单设计器 基于Extjs的web表单设计器 第一节 基于Extjs的web表单设计器 第二节——表单控件设计 基于Extjs的web表单设计器 第三节——控件拖放 基于Extjs的web表单设计器 第四节——控件拖放 基于Extjs的web表单设计器 第五节——数据库设计 基于Extjs的web表单设计器 第六节——界面框架设计 基于Extjs的web表单设计器 第七节——取数公式设计之取数公式定义 基于Extjs的web表单设计器 第七节——取数公式设计之取数公式的使用

第七节 VMware View 6.0 菜鸟入门 Composer 安装和部署

第七节 VMware View 6.0 菜鸟入门 Composer 安装和部署 一.创建ComposerDB 数据库 在vc虚拟机中的数据库创建ComposerDB 创建ODBC,打开开始菜单--->管理工具---->数据源(ODBC) 二.安装View -Composer 软件 下载VMware-viewcomposer-6.0.1-2078421.exe 软件 输入域管理员的账户和密码 安装完后重启计算机

VUE2.0实现购物车和地址选配功能学习第七节

第七节 卡片选中,设置默认 1.卡片选中html:<li v-for="(item,index) in filterAddress" v-bind:class="{'check':index==currentIndex}" @click="currentIndex=index"> <!--循环判断currenIndex,控制当前选中卡片的样式-->js: data:{ currentIndex:0,},2.设置默认html

JAVA 从GC日志分析堆内存 第七节

JAVA 从GC日志分析堆内存 第七节 在上一章中,我们只设置了整个堆的内存大小.但是我们知道,堆又分为了新生代,年老代.他们之间的内存怎么分配呢?新生代又分为Eden和Survivor,他们的比例大小能改变吗?其实这些都是可控的,以前没有讲到是因为就算讲了也只是讲讲而已,看不到实质性的东西.因此这章我们通过分析GC日志来一步步讲解如何细化设置堆内存. 首先我们来了解几个相关的参数: -XX:+PrintGCDetails:用于告诉虚拟机回收垃圾的时候顺便打印日志. -Xloggc:路径 :将打

centos mysql 优化 第七节课

centos mysql  优化  第七节课 f

火云开发课堂 - 《Shader从入门到精通》系列 第七节:在Shader中实现纹理混合

<Shader从入门到精通>系列在线课程 第七节:在Shader中实现纹理混合 视频地址:http://edu.csdn.net/course/detail/1441/22669?auto_start=1 交流论坛:http://www.firestonegames.com/bbs/forum.php 工程下载地址:请成为正式学员获取工程 课程截图: 版权声明:本文为博主原创文章,未经博主允许不得转载.

[ExtJS学习笔记]第七节 Extjs的组件components及其模板事件方法学习

本文地址:http://blog.csdn.net/sushengmiyan/article/details/38487519 本文作者:sushengmiyan -------------------------------------------------------------资源链接----------------------------------------------------------------------- 翻译来源  Sencha Cmd官方网站: http://ww

CUDA:Supercomputing for the Masses (用于大量数据的超级计算)-第七节

第七节:使用下一代CUDA硬件,快乐加速度 原文链接 Rob Farber 是西北太平洋国家实验室(Pacific Northwest National Laboratory)的高级科研人员.他在多个国家级的实验室进行大型并行运算的研究,并且是几个新创企业的合伙人.大家可以发邮件到[email protected]与他沟通和交流. 在关于CUDA(Compute Unified Device Architecture,即计算统一设备架构的简称)的系列文章的第六节,我探讨了使用CUDA PROFI

2014年度辛星html教程夏季版第七节

经过前面六节的学习,我们大致清楚了HTML教程中的基础内容,那么接下来我们开始继续向后推进,可以说,下面我们介绍一下HTML中的区块. ***************区块*************** 1.HTML中的大多数元素都被定义为块级元素或内联元素,块级元素在显示的时候,会以新行开始,比如我们前面讲到的h1标签,p标签,ol标签和table标签. 2.而内联元素则在显示的时候是不会另起一行的,它们会在后面显示,比如我们前面讲到的td标签,img标签,strong标签等等. *******

2014年辛星完全解读Javascript第七节 数组和对象

由于Javascript是脚本语言,因此,使用起来非常方便,数组的使用也是比较简单的,下面我们就主要介绍一下Javascript中数组的介绍,以及上一节中没有完成的对象的介绍. **************数组************** 1.在Javascript中,声明一个数组太简单了,而且它支持三种方式,第一种方式是直接实例化一个Array,然后用下标的形式去添加,但是它不像PHP那样灵活,它不允许不写下标就向里面添加数据,因此,我们指定下标即可. 2.访问数组的成员就向C语言的数组那样访