python保留字_开始了类定义_Python 类的定 义
Python 是完全面向对象的:你可以定义自已的类,从自已的或内置的类继承,然后从你定义的类创建实例。
在 Python 中定义类很简单。就像定义函数,没有单独的接口定义。只要定义类,然后就可以开始编码。Python 类以保留字 class 开始,后面跟着类名。从技术上讲,有这些就够了,因为一个类并非必须从其它类继承。
1. 最简单的 Python 类
class Loaf: (1)
pass (2) (3)
(1) 这个类的名字是 Loaf,它没有从其它类继承。类名通常是第一个字母大写,如:EachWordLikeThis,但这只是一个习惯,不是一个必要条件。
(2) 这个类没有定义任何方法或属性,但是从语法上,需要在定义中有些东西,所以你使用 pass。这是一个 Python 保留字,仅仅表示 “向前走,不要往这看”。它是一条什么都不做的语句,当你删空函数或类时,它是一个很好的占位符。
(3) 你可能猜到了,在类中的所有东西都要缩近,就像位于函数、if 语句,for 循环,诸如此类的代码。第一条不缩近的东西不属于这个类。
2. 定义 Fi le Info 类
from UserDict import UserDict
class FileInfo(UserDict): (1)
(1) 在 Python 中,类的基类只是简单地列在类名后面的小括号里。所以 FileInfo 类是从 UserDict 类 (它是从 UserDict模块导进来的 ) 继承来的。UserDict 是一个像字典一样工作的类,它允许你完全子类化字典数据类型,同时增加你自已的行为。(也存在相似的类 UserList 和 UserString ,它们允许你子类化列表和字符串。)
Python 支持多重继承。在类名后面的小括号中,你可以列出许多你想要的类名,以逗号分隔。
3. 初始化并开始类编码
本例演示了使用 __init__ 方法来进行 FileInfo 类的初始化。
class FileInfo(UserDict):
"store file metadata" (1)
def __init__(self, filename=None): (2) (3) (4)
(1) 类也可以 (并且应该) 有 doc strings ,就像方法和函数一样。
(2) __init__ 在类的实例创建后被立即调用。它可能会引诱你称之为类的构造函数,但这种说法并不正确。说它引诱,是因为它看上去像 (按照习惯,__init__ 是类中第一个定义的方法),行为也像 (在一个新创建的类实例中,它是首先被执行的代码),并且叫起来也像 (“init”当然意味着构造的本性)。说它不正确,是因为对象在调用 __init__ 时已经被构造出来了,你已经有了一个对类的新实例的有效引用。但 __init__ 是在 Python 中你可以得到的最接近构造函数的东西,并且它也扮演着非常相似的角色。
(3) 每个类方法的第一个参数,包括 __init__,都是指向类的当前实例的引用。按照习惯这个参数总是被称为 self。在 __init__ 方法中,self 指向新创建的对象;在其它的类方法中,它指向方法被调用的类实例。尽管当定义方法时你需要明确指定 self,但在调用方法时,你不 用指定它,Python 会替你自动加上的。
(4) __init__ 方法可以接受任意数目的参数,就像函数一样,参数可以用缺省值定义,即可以设置成对于调用者可选。在本例中,filename 有一个缺省值None,即 Python 的空值。
4. 编写 FileInfo 类
class FileInfo(UserDict):
"store file metadata"
def __init__(self, filename=None):
UserDict.__init__(self) (1)
self["name"] = filename (2)
(3)
(1) 一些伪面向对象语言,像 Powerbuilder 有一种“扩展”构造函数和其它事件的概念,即父类的方法在子类的方法执行前被自动调用。Python 不是这样,你必须显示地调用在父类中的合适方法。
(2) 我告诉过你,这个类像字典一样工作,那么这里就是第一个印象。我们将参数 filename 赋值给对象 name 关键字,作为它的值。
(3) 注意 __init__ 方法从不返回一个值。
5. 了解何时去使用 self 和 __init__
当定义你自已的类方法时,你必须 明确将 self 作为每个方法的第一个参数列出,包括 __init__。当从你的类中调用一个父类的一个方法时,你必须包括 self 参数。但当你从类的外部调用你的类方法时,你不必对 self 参数指定任何值;你完全将其忽略,而 Python 会自动地替你增加实例的引用。我知道刚开始这有些混乱,它并不是自相矛盾的,因为它依靠于一个你还不了解的区别 (在绑定与非绑定方法之间),故看上去是矛盾的。
噢。我知道有很多知识需要吸收,但是你要掌握它。所有的 Python 类以相同的方式工作,所以一旦你学会了一个,就是学会了全部。如果你忘了别的任何事,也要记住这件事,因为我认定它会让你出错:
6. __init__ 方法
__init__ 方法是可选的,但是一旦你定义了,就必须记得显示调用父类的 __init__ 方法 (如果它定义了的话)。这样更是正确的:无论何时子类想扩展父类的行为,后代方法必须在适当的时机,使用适当的参数,显式调用父类方法。
python保留字_开始了类定义_Python 类的定 义相关推荐
- python函数打上去说未定义_Python:名称未定义错误,即使函数被明确定义为b
我是python新手,在函数定义方面有一个奇怪的问题.我已经检查了论坛,并确保在调用之前定义了我的函数,但是这并没有帮助解决问题.当我试图在这个特定的方法中按字面方式调用函数时,总是会遇到一个未定义名 ...
- python中扑克牌类设计_Python类的基础设计、使用
类是事物功能和属性的抽象,对象是类的实例化.就像人人都知道小汽车可以干什么什么的,但光想小汽车如何好是没有用的,得开车或坐才能感受到小汽车的好.人脑里的小汽车是抽象的,即类,而坐上的某辆车是小汽车的实 ...
- 类定义和类实现的分离
C++允许将类的定义和实现分离.类定义描述了类的"约定",而类实现则实现了这一约定.类定义简单地列出所有数据域.构造函数原型和函数原型,类实现给出构造函数和成员函数的实现. 两者可 ...
- python中类的定义_python 类中定义类
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 现有自定义类(color.py)如下,类位于路径'userschuxingpyt ...
- python定义函数需要保留字def_定义函数时要用到哪一个python保留字?_学小易找答案...
[简答题]常见的足部畸形有哪些?例举6种以上. [其它]请将会计学小册子第四章完成情况(选择+判断+业务题2. 6.)的所有内容拍照上传嗷 [其它]以小组为单位进行现场调研,对足球场外的广场区域植物造 ...
- python类和对象的定义_python类与对象基本语法
面向对象编程的2个非常重要的概念:类和对象. 对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念--类. 本人学习笔记基于python2的 ...
- emit python 作用_.NET高级特性-Emit(2)类的定义
在上一篇博文发了一天左右的时间,就收到了博客园许多读者的评论和推荐,非常感谢,我也会及时回复读者的评论.之后我也将继续撰写博文,梳理相关.NET的知识,希望.NET的圈子能越来越大,开发者能了解/深入 ...
- int是不是python保留字_下面不属于Python保留字的是:
[填空题]作解剖定位时,家畜前.后肢的后面分别称为( )和( ). [单选题]世界上第一条高速铁路是 [单选题]Z+Z* = ? [单选题]下面不属于Python保留字的是: [单选题]The acc ...
- python中的继承有什么特点_python类的继承是什么?类的继承有什么样的规则?
在这篇文章之中我们来了解一下python类的继承,对于刚刚接触到python这一编程语言的朋友来说,对于python类的继承的了解应该比较少,不过没关系,在接下来的文章之中我们就来了解一下python ...
最新文章
- 大剑无锋之如何查看一个java进程的堆内存使用情况(jps,jstack,jmap)【面试推荐】
- html图片宽度高度等比例绽放,css图片自动绽放大小,左右,上下居中
- html页面缓存meta,html中怎么用meta语句禁用页面缓存?
- win10 flashcs6不能用了_听说这版win10马上不能用了?那就改装“它”,比win7还稳定流畅...
- 用dockers实现mysql主从同步
- java虚拟机的数据_Java虚拟机运行时数据区域
- 通达信公式改成python_通达信 修改为选股公式
- 磁盘阵列卡 远程监控(MegaRAID Storage Manager)(一)
- oso kabuwj severe conime 美女病毒 重要文件.exe : 通过移动设备引发的血案...
- TM1650芯片使用经验
- 问题 D: 寻找丢失的LZY
- python处理csv文件计算均值_读取CSV文件,计算平均值并打印所述平均值
- 通过U盘安装windows简易教程
- matlab里vSAS,科学网—【MATLAB】saveas和print保存图片的格式 - 叶瑞杰的博文
- ppt文字磨砂玻璃效果制作教程
- 2G,3G,4G网络架构浅谈——4G(LTE)
- freeRTOS出现任务卡死的情况。
- 摄影笔记一:《李元谈摄影修炼之道》
- HTML5训练营,HTML5 足球俱乐部/训练营网站模板
- 2019公众号引流小诀窍大汇总