以下是小编帮大家整理的理解Python中的类与实例,本文共6篇,欢迎大家分享。
篇1:理解Python中的类与实例
作者:廖雪峰 字体:[增加 减小] 类型:
这篇文章主要介绍了Python中的类与实例,类与实例的概念是Python学习当中的基础知识,需要的朋友可以参考下
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同,
仍以Student类为例,在Python中,定义类是通过class关键字:
class Student(object): pass
class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,继承的概念我们后面再讲,通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。
定义好了Student类,就可以根据Student类创建出Student的实例,创建实例是通过类名+实现的:
>>>bart = Student()>>>bart<__main__.Student object at 0x10a67a590>>>>Student 可以看到,变量bart指向的就是一个Student的object,后面的0x10a67a590是内存地址,每个object的地址都不一样,而Student本身则是一个类。 可以自由地给一个实例变量绑定属性,比如,给实例bart绑定一个name属性: >>>bart.name = ‘Bart Simpson‘>>>bart.name‘Bart Simpson‘ 由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去: class Student(object): def __init__(self, name, score): self.name = name self.score = score 注意到__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。 有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去: >>>bart = Student(‘Bart Simpson‘, 59)>>>bart.name‘Bart Simpson‘>>>bart.score59 和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认参数、可变参数和关键字参数。 数据封装 面向对象编程的一个重要特点就是数据封装。在上面的Student类中,每个实例就拥有各自的name和score这些数据, 我们可以通过函数来访问这些数据,比如打印一个学生的成绩: >>>def print_score(std):... print ‘%s: %s‘ % (std.name, std.score)...>>>print_score(bart)Bart Simpson: 59 但是,既然Student实例本身就拥有这些数据,要访问这些数据,就没有必要从外面的函数去访问,可以直接在Student类的内部定义访问数据的函数,这样,就把“数据”给封装起来了。这些封装数据的函数是和Student类本身是关联起来的,我们称之为类的方法: class Student(object): def __init__(self, name, score): self.name = name self.score = score def print_score(self): print ‘%s: %s‘ % (self.name, self.score) 要定义一个方法,除了第一个参数是self外,其他和普通函数一样。要调用一个方法,只需要在实例变量上直接调用,除了self不用传递,其他参数正常传入: >>>bart.print_score()Bart Simpson: 59 这样一来,我们从外部看Student类,就只需要知道,创建实例需要给出name和score,而如何打印,都是在Student类的内部定义的,这些数据和逻辑被“封装”起来了,调用很容易,但却不用知道内部实现的细节。 封装的另一个好处是可以给Student类增加新的方法,比如get_grade: class Student(object): ... def get_grade(self): if self.score >= 90:return ‘A‘ elif self.score >= 60:return ‘B‘ else:return ‘C‘ 同样的,get_grade方法可以直接在实例变量上调用,不需要知道内部实现细节: >>>bart.get_grade()‘C‘ 小结 类是创建实例的模板,而实例则是一个一个具体的对象,各个实例拥有的数据都互相独立,互不影响; 方法就是与实例绑定的函数,和普通函数不同,方法可以直接访问实例的数据; 通过在实例上调用方法,我们就直接操作了对象内部的数据,但无需知道方法内部的实现细节。 和静态语言不同,Python允许对实例变量绑定任何数据,也就是说,对于两个实例变量,虽然它们都是同一个类的不同实例,但拥有的变量名称都可能不同: >>>bart = Student(‘Bart Simpson‘, 59)>>>lisa = Student(‘Lisa Simpson‘, 87)>>>bart.age = 8>>>bart.age8>>>lisa.ageTraceback (most recent call last): File “ -05-05ssh批量登录并执行命令的python实现代码 -02-02python登录QQ邮箱发信的实现代码 2013-03-03python中定义结构体的方法 2012-08-08Python模块学习filecmp 文件比较 -02-02python实现ftp客户端示例分享 2014-04-04Python操作sqlite3快速、安全插入数据(防注入)的实例 2014-05-05Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好) 2013-12-12python批量修改文件后缀示例代码分享 2013-12-12python获取beautifulphoto随机某图片代码实例 2014-02-02python基础教程之udp端口扫描 在Windows8上的搭建Python和Django环境 python获取网页状态码示例 python 判断自定义对象类型 使用python在校内发人人网状态(人人网看状 python抓取网页图片并放到指定文件夹 python实现socket端口重定向示例 python二分法实现实例 python解析xml模块封装代码 windows下python模拟鼠标点击和键盘输示例 python访问sqlserver示例 Python入门教程 超详细1小时学会 python 中文乱码问题深入分析 比较详细Python正则表达式操作指 Python字符串的encode与decode研 Python open读写文件实现脚本 Python enumerate遍历数组示例应 Python 深入理解yield Python+Django在windows下的开发 python 文件和路径操作函数小结 python 字符串split的用法分享 python中getattr函数使用方法 getattr实现 python3图片转换二进制存入mysql Python实例之wxpython中Frame使用方法 python正则表达式re模块详细介绍 python获取豆瓣电影简介代码分享 python client使用http post 到server端的 python实现sublime3的less编译插件示例 python基础教程之popen函数操作其它程序的 python正则表达式re模块详解 python的正则表达式re模块的常用方法 Python入门教程 超详细1小时学会 python 中文乱码问题深入分析 比较详细Python正则表达式操作指 Python字符串的encode与decode研 Python open读写文件实现脚本 Python enumerate遍历数组示例应 Python 深入理解yield Python+Django在windows下的开发 python 文件和路径操作函数小结 python 字符串split的用法分享 作者:秋风秋雨 字体:[增加 减小] 类型: 这篇文章主要介绍了python写日志封装类,实例分析了Python操作日志的相关技巧,需要的朋友可以参考下 本文实例讲述了python实现写日志封装类,分享给大家供大家参考。具体如下: # encoding:utf-8import sysimport loggingimport timedef writeLog(message): logger=logging.getLogger filename = time.strftime(‘%Y-%m-%d‘,time.localtime(time.time())) handler=logging.FileHandler(“./log/”+filename+“error”) logger.addHandler(handler) logger.setLevel(logging.NOTSET) logger.info(message)if __name__ == ‘__main__‘: writeLog(“hello”) 将这段代码保存为 TLog,调用的时候先import TLog,然后TLog.writelog(“jb51”)即可 希望本文所述对大家的Python程序设计有所帮助, 作者:蛇小狼 字体:[增加 减小] 类型:转载 1. 使用TAB补全功能 2. 配置IPYTHON .ipython目录中的是一个名为ipy_user_conf.py的文件。这就是使用Python语法的简单用户配置文件。 3. 魔力函数 lsmagic可以列出所有的魔力函数 或者% magic 本身可以查看魔力函数的帮助 也可以使用 魔力函数后面直接跟问好的形式 例如 %page? %quickref的起始部分是一个对IPython各种用法的引用。%quickref的其余部分是对%magic函数的迷你总结,包括全部帮助信息的首行。 4. 执行系统命令 内嵌ls cd alias等shell命令 alias nss netstat -lptn 另一个可以简易执行shell命令的方法,是在命令前加一个感叹号(!) 通过$可以把变量传递给shell命令 user = ‘mouren‘process = ‘bash‘!ps aux|grep $user |grep process who 查看定义变量 who int 显示int的变量 whos 显示变量值 who_ls 返回列表 who_ls int reset 删除所有变量 查看历史 hist 5. 系统命令和python 变量的混搭 系统命令转换为python变量 myfile = !ls 直接!!ls列出文件列表 使用{}内的python变量,可以跟系统命令一起使用 In [1]: pyvar = ‘Hello world‘In [2]: !echo “A python variable: {pyvar}”A python variable: Hello worldIn [3]: import mathIn [4]: x = 8In [5]: !echo {math.factorial(x)}40320 也可以使用$来标识python变量 In [6]: !echo $sys.argv[/home/fperez/usr/bin/ipython]In [7]: !echo “A system variable: $$HOME” # Use $$ for literal $A system variable: /home/fperez 希望本文所述对大家的Python程序设计有所帮助,
篇2:Python实现类继承实例
篇3:Python实现类继承实例
最近更 新
热 点 排 行
篇4:python中的实例方法、静态方法、类方法、类变量和实例变量浅析
最近更 新
热 点 排 行
篇5:python写日志封装类实例
篇6:Python中IPYTHON入门实例
更多推荐
理解Python中的类与实例
发布评论