异常,类与枚举

2023-11-09

异常

        除了关键字不一样外,其余的与java完全相同。

        try-except-finally分别表示java中的try,catch,finally。java中的throw在python中用raise代替。

try:
	f = file('x.txt')
except Exception, e: # 捕获异常,并将异常信息用e变量存储
	print e
else: # 程序没有异常时执行
	print 'no except'
finally: # 与java中一样
	print 'finally'
        python中所有的异常都是Exception的子类。

        else与finally都存在时,如果程序出现异常,不执行else但执行finally;如果程序没有异常,则先执行else,再执行finally。

raise

        raise如果不带参数的话,会将当前的异常原样抛出。

logging

       日志模块。

        basicConfig():

        python中所有的数据都是对象,包括基本数据类型,而赋值就是将对象的地址赋值给对应的变量,使变量与对象关联起来。由于基本数据类型也是对象,因此a=1语句会执行两个操作:分配一块内存存储1,并使用变量a记录该内存的地址。

        类的定义与java一样,通过class关键字表示。

函数

        所有函数至少有一个参数,并且所有函数的第一个参数都是self(它代表当前对象自身,同java中的this一样),在使用函数时不需要为第一个参数传值。

        所有类的构造函数名都是__init__,而且第一个参数也必须是self。可以在构造函数中为类定义一些全局变量。

        类的实例化也与java类似,只不过不需要关键字new。如:

class Demo:
    def __init__(self,a): # 构造函数
        self.a = a # 定义一个全局变量a
    def function(self,b):
        return 'Demo%s-%s'%(self.a,b)
d = Demo(3) # 实例化对象,并且传入构造函数需要的参数
print d.function(5) # Demo3-5
        python允许对实例变量绑定任何数据,也就是说获取对象后,可以为对象动态添加属性,新添加的属性只为该实例所有,别的实例无法使用。如下:
d = Demo(3) 
d1 = Demo(3)
d.name = 'name'
print d.name # name
print d1.name # AttributeError
        其实这和__init__一样,在__init__中self指对象本身,而此时也没有任何属性,都是在__init__函数中新添加的属性,只不过__init__是构造函数,每一个对象都会执行,也就保证了每一个对象都会有在__init__中定义的属性。

继承

        定义类时,可以在类名后面跟(),并在()中写上父类。所有的类都继承于object。如

class Demo:
	def function(self):
		return 'Demo'
class Demo2(Demo):# Demo2继承于Demo
	a = None
d = Demo2()
print d.function() # Demo

        一个类可以多继承,只需要在()中用逗号将父类隔开即要。

class P1(object):
    def say(self):
        print("say")


class P2(object):

    def sing(self):
        print("sing")


class C(P1, P2):  # C继承于P1,P2
    pass

c = C()
c.say()
c.sing()

私有

        以双下划线开头的变量是私有的,外界无法直接访问。但要注意以双下划线开头,并且以双下划线结尾的是特殊变量,是可以直接访问的。

class Demo:
	def __init__(self,a): 
		self.__a = a # 私有属性__a
		self.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

异常,类与枚举 的相关文章

  • 在Python中表示语料库句子的一种热门编码

    我是 Python 和 Scikit learn 库的初学者 我目前需要从事一个 NLP 项目 该项目首先需要通过 One Hot Encoding 来表示一个大型语料库 我已经阅读了 Scikit learn 关于 preprocessi
  • Python 3 中是否有像 C++ 中的 getchar() 这样的内置函数?

    我想在 python 中进行用户输入 类似于获取字符 c 中使用的函数 C 代码 include
  • Python 中的 if len(list)

    我正在将 Python 代码转换为 C 代码 以便利用 HPC 系统上可用的并行性 最初的程序员在 Python 中使用了一个令我困惑的条件 if rnum lt gt current res alim 0 if len f alim f
  • 当存在多个条件时替换 numpy 数组中的元素

    这个问题与以下帖子相关 如果满足条件则替换 Numpy 元素 https stackoverflow com questions 19766757 replacing numpy elements if condition is met 假
  • 对同色像素块的边界进行着色

    我有一张有 5 种不同颜色的图像 在这种情况下 随机生成 w h 40 27 img Image new RGB w h pixels img load available colors r 255 13 18 b 72 64 255 y
  • 无法通过 pip 安装 xmlsec

    我在运行时收到以下信息pip install xmlsec在 macOS Big Sur 11 3 1 中 Building wheels for collected packages xmlsec Building wheel for x
  • 在 SQLAlchemy 中选择 NULL 值

    这是我的 PostgreSQL 表 test gt create table people name varchar primary key marriage status varchar test gt insert into peopl
  • 如何在 SQLAlchemy 中连接两个表中的数据?

    我有3张桌子 Account User and Organization Account由组成id name and organization id User由组成email and organization id Organization
  • 求 Petersen 子图中的哈密顿路径

    我开始使用 IDE Jupyter Python 3 6 并出现了一个问题 我必须通过IDE绘制Petersen子图中的哈密顿路径 但我不知道该怎么做 我显示有关该图的信息 彼得森图 https en wikipedia org wiki
  • 使用Python下载YouTube视频到某个目录

    我已尝试使用以下代码在 YouTube 中下载视频并且它可以正常工作 但我想将视频保存在特定位置 现在它正在将视频保存在C Users Download 如果我想将视频保存在桌面上 我需要对代码进行哪些更改 from future impo
  • 将多种类型存储为 C++ 字典中的值?

    我想编写一个行为几乎等同于 Python 字典的 C 对象 C 的std map and std unordered map容纳了 Python 字典已有的一些功能 但缺乏最重要的功能之一 即能够添加任意对象和类型 即使不可能 您离实现 P
  • 使用 Python 自动化旧的 DOS 应用程序

    有没有办法从Python 在Windows上 自动化旧的DOS应用程序 16位 可能需要模拟器 例如DOSBox 我想将密钥和字符串发送到应用程序 检测 DOS 屏幕 的更新并获取应用程序输出 如果 DOS 应用程序能够 隐藏 运行 即不显
  • 如何在 difflibs html 输出中突出显示每行超过两个字符

    我在用difflib HtmlDiff比较两个文件 我希望在输出的 html 中突出显示差异 当一行中最多有两个不同的字符时 这已经有效 a 2 000 b 2 120 但是 当一行上有更多不同的字符时 在输出中整行将被标记为红色 在左侧
  • 返回实例的类方法的类型注释

    我应该如何注释 classmethod返回一个实例cls 这是一个不好的例子 class Foo object def init self bar str self bar bar classmethod def with stuff ap
  • 如何使用ssl启动flask_socketio应用程序?

    我应该如何使用 SSL 将 app run 转换为 sockio run 我有下面的应用程序启动代码与 Flask 开发服务器一起运行 if name main app run ssl context ssl cert ssl key 我现
  • 如何使用 python 子进程杀死性能记录?

    我正在尝试使用性能实用程序 https www brendangregg com perf html监视我的系统 它将在 python 脚本中启动和终止 我创建了一个沙箱 如下所示 extra params F 99 g a record
  • 使用OIL自动旋转手机和加速度计拍摄的照片

    我在网络应用程序中使用 Django PIL Amazon boto 用户发送图片 然后 Web 应用程序显示它 大多数情况下 人们会发送用手机拍摄的照片 有时 图像以错误的方向显示 有没有办法使用 PIL 或 Django 的 Image
  • Django 查询集和生成器

    出乎意料的是 我想知道以下使用生成器迭代结果集的方式是否会对正常迭代产生任何积极或消极的影响 eg def all items generator for item in Item objects all yield item for it
  • 使用 NumPy 函数计算 Pandas 的加权平均值

    假设我们有一个像这样的 pandas 数据框 a b id 36 25 2 40 25 3 46 23 2 40 22 5 42 20 5 56 39 3 我想执行一个操作 a div b 然后按 id 分组 最后使用 a 作为权重计算加权
  • 访问 django for 循环中的元素

    我有一个 Django 模板 其中包含以下代码 该模板创建多个按钮并尝试通过单击 在同一按钮上 删除 隐藏其中一个按钮 for h in helicopters div class btn group div

随机推荐