python之7-1类
面向对象的编程,其实是将对象抽象成类,然后在类中,通过init定义实例初始化函数和多个操作实例的函数.
整个类就如同一个模板,我们可以用这个模板生成众多具现实例,并赋予实例动作.
py中定义类的大致格式如下:
class 类名():
类变量名 =
类名.类变量名 #调用类变量
def _init_(self,参数1,参数2): #这里的参数也可以没有,即可以直接 self.属性 = 值 而self每次对应的就是实例自己
self.属性1 = 参数1
self.属性2 = 参数2
def 实例方法函数名(self,方法变量1,方法变量2):
函数体 实例名 = 类名(参数1,参数2) #实例创建
实例名.实例方法函数名() #实例动作函数调用
注释1:self这里就是实例统称,属性1和属性2是类的属性,然后将属性1和属性2获得的参数传递给实例,构建实例的属性,最后这些实例属性,被方法函数所调用
注释2:
类 就像是 包;
init函数 就如同包里面的 init模块 ,来介绍这个类;
方法函数 就像是包里面的 其他模块,来具体实现类的操作
- 例子1:
#!/usr/bin/python
# Filename: objvar.py class Person:
'''Represents a person.'''
population = 0 def __init__(self, name):
'''Initializes the person's data.'''
self.name = name
print '(Initializing %s)' % self.name # When this person is created, he/she
# adds to the population
Person.population += 1 def __del__(self):
'''I am dying.'''
print '%s says bye.' % self.name Person.population -= 1 if Person.population == 0:
print 'I am the last one.'
else:
print 'There are still %d people left.' % Person.population def sayHi(self):
'''Greeting by the person. Really, that's all it does.'''
print 'Hi, my name is %s.' % self.name def howMany(self):
'''Prints the current population.'''
if Person.population == 1:
print 'I am the only person here.'
else:
print 'We have %d persons here.' % Person.population swaroop = Person('Swaroop')
swaroop.sayHi()
swaroop.howMany() kalam = Person('Abdul Kalam')
kalam.sayHi()
kalam.howMany() swaroop.sayHi()
swaroop.howMany()
- 例子2:获取一组连续数字的中间数字
#!/usr/bin/python2.6
class lis:
def __init__(self, start, end):
self.start = start
self.end = end
def test(self):
if ( self.start % 2 == 0 and self.end % 2 == 0 ) or ( self.start % 2 == 1 and self.end % 2 == 1):
print ( self.start + self.end ) / 2
elif self.start % 2 == 1 or self.end % 2 == 1:
tmp_num = ( self.start + self.end + 1) / 2
print tmp_num - 1, tmp_num a = lis(1,10)
b = lis(1,9)
c = lis(2,10)
d = lis(2,9)
a.test()
b.test()
c.test()
d.test()
python之7-1类的更多相关文章
- python基础——使用元类
python基础——使用元类 type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Hello的class,就写一个hello. ...
- Python基础:新式类的属性访问
一.概述 二.准备工作 1.讨论对象 2.名词解释 三.实例绑定的属性访问 1.获取属性 一般规则 参考源码 示例验证 2.设置属性 一般规则 参考源码 示例验证 3.删除属性 一般规则 参考源码 示 ...
- Python基础:元类
一.概述 二.经典阐述 三.核心总结 1.类的创建过程 2.元类的使用惯例 四.简单案例 1.默认行为 2.使用元类 五.实践为王 一.概述 Python虽然是多范式的编程语言,但它的数据模型却是 纯 ...
- 深刻理解Python中的元类metaclass(转)
本文由 伯乐在线 - bigship 翻译 英文出处:stackoverflow 译文:http://blog.jobbole.com/21351/ 译注:这是一篇在Stack overflow上很热 ...
- 深刻理解Python中的元类(metaclass)
译注:这是一篇在Stack overflow上很热的帖子.提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自省有关,但仍然觉得 ...
- Python 装饰器装饰类中的方法
title: Python 装饰器装饰类中的方法 comments: true date: 2017-04-17 20:44:31 tags: ['Python', 'Decorate'] categ ...
- Python中的元类(metaclass)
推荐+收藏:深刻理解Python中的元类(metaclass) 做一些笔记学习学习: 在大多数编程语言中,类就是用来描述如何生成一个对象的代码段,在Python中类也是一个对象,这个(类)对象自身拥有 ...
- [转] 深刻理解Python中的元类(metaclass)
非常详细的一篇深入讲解Python中metaclass的文章,感谢伯乐在线-bigship翻译及作者,转载收藏. 本文由 伯乐在线 - bigship 翻译.未经许可,禁止转载!英文出处:stacko ...
- Python学习 Part7:类
Python学习 Part7:类 1. 作用域和命名空间 命名空间(namespace)就是一个从名称到对象的映射. 命名空间的一些实例:内置名称集(函数,像abs(),和内置异常名称),一个模块中的 ...
- python学习笔记4_类和更抽象
python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...
随机推荐
- Swift—使用try?和try!区别-备
在使用try进行错误处理的时候,经常会看到try后面跟有问号(?)或感叹号(!),他们有什么区别呢? 1.使用try? try?会将错误转换为可选值,当调用try?+函数或方法语句时候,如果函数或方 ...
- Android自定义View 构造方法 遇到的一些问题
Android开发中,经常会自定义View,那么就会使用构造方法,比如自定义MyView,继承View,会要求实现构造方法: public MyView(Context context) { supe ...
- Android进阶2之PopupWindow弹窗(有点悬浮窗的感觉)
PopupWindow是一个可以用来显示一个任意的视图的弹出窗口,他需要完全依赖layout布局. 它没什么界面,在弹出的窗口中完全显示布局中的控件. 上面两个美女头就是弹窗PopupWindow显示 ...
- ural 1119 Metro
http://acm.timus.ru/problem.aspx?space=1&num=1119 #include <cstdio> #include <cstring&g ...
- hdu-1800
思路: 这题被坑的不轻. 首先花了一段时间想明白了思路是要找出现次数最多数字,以为这题就这样解决了,结果发现每个数字的最大长度是30,long long都装不下,因此就要用字符串来保存处理.然后在in ...
- Could not Build module ImageIO
错误提示:Could not Build module ImageIO: 原因:修改了XCode API 源文件 措施:从一个干净的未曾修改过的XCode中拷贝一份相应的文件添加到发生错误的XCode ...
- J2EE基础总结(4)——JSP
什么是JSP JSP全名为Java Server Pages,中文名叫javaserver页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导.很多 ...
- 【转】Linux中安装Resin
安装步骤: Ø 安装resin前先要保证安装了JDK,可以用命令查看是否安装了JDK: [root@wxr webapps]# java -versions java version " ...
- zabbix监控应用连接数
zabbix使用用户自定义键值来监控应用系统连接数: 1.修改配置文件zabbix_agentd.conf 格式: UserParameter=<key>,<shell comman ...
- 在C#、Java中,为什么不能用[返回值]区别重载方法?
为什么方法签名只包含方法名和参数列表,而没有把返回值考虑进去? 如下有两个方法: void Func(){} string Func() { return string.Empty; } 编辑器可以根 ...