我有下面的代码片段,可以创建一个笔记并添加到笔记本中.

我的问题与全局变量last_id更相关.当我将它声明为类变量时,即在Class Note中,我得到以下错误但是当我在类外声明时,我的代码工作正常.

以下是我的澄清:

>为什么不接受类变量.

>当我在函数中将其声明为全局变量时,为什么需要定义last_id?

错误:

C:\Python27\Basics\OOP\formytesting>python notebook.py

Traceback (most recent call last):

File "notebook.py", line 38, in

firstnote = Note('This is my first memo','example')

File "notebook.py", line 10, in __init__

last_id += 1

NameError: global name 'last_id' is not defined

code.py

import datetime

last_id = 0

class Note:

def __init__(self, memo, tags):

self.memo = memo

self.tags = tags

self.creation_date = datetime.date.today()

global last_id

last_id += 1

self.id = last_id

#global last_id

#last_id += 1

#self.id = last_id

def __str__(self):

return 'Memo={0}, Tag={1}, id={2}'.format(self.memo, self.tags,self.id)

class NoteBook:

def __init__(self):

self.notes = []

def add_note(self,memo,tags):

self.notes.append(Note(memo,tags))

def __iter__(self):

for note in self.notes:

yield note

if __name__ == "__main__":

firstnote = Note('This is my first memo','example')

print(firstnote)

Notes = NoteBook()

print("Adding a new note object")

Notes.add_note('Added thru notes','example-1')

Notes.add_note('Added thru notes','example-2')

for note in Notes.notes:

print(note.memo,note.tags)

for note in Notes:

print(note)

print("Adding a new note object----End")

python在开头声明全局变量_全局变量声明Python相关推荐

  1. python脚本开头怎么写_浅谈Python脚本开头及导包注释自动添加方法

    浅谈Python脚本开头及导包注释自动添加方法 1.开头:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定 #!/usr/bin/python 是用来 ...

  2. python中全局变量_玩转Python,使用全局变量

    这是本专栏的第一篇文章,开设这个专栏的目的很单纯,就是向读者的各位展示Python编程的乐趣.我在工作中发现一个现象:热爱编程的人总是能从繁琐的任务中发现其中的乐趣,进而对这门语言了解的更深入.而只是 ...

  3. python tab和空格混用_我的 Python 编码规范

    python 文件的组成 为了便于描述,先上一个 demo #!/usr/bin/env python# -*- coding: utf-8 -*-"""通常这里是关于本 ...

  4. python将字符串逆序_为什么说Python是一门伟大的入门语言?(附免费教程)

    Python 是一门伟大的入门语言.作为一门伟大的编程语言,一定要具备一些特征,其中有五项特征是非常重要的: 非常棒的首次体验:就像书的开始,首先一定要能够"沉迷",学习新知识一定 ...

  5. eval在python中是什么意思_如何在Python中使用eval ?

    Python中的 eval是什么? 在Python中,我们有许多内置方法,这些方法对于使Python成为所有人的便捷语言至关重要,而eval是其中一种.eval函数的语法如下: eval(expres ...

  6. python函数变量的作用域_学不会的Python函数——变量作用域

    1. LEGB函数 Python中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的.我们先来看一段代码. 上述代码有两个变量a,当在test函数中输出变量a的值是,为什么 ...

  7. python如何初始化对象数组_如何理解Python中的面向对象编程?

    (由Python大本营付费下载自视觉中国) 作者 | Radek Fabisiak 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 现如今面向对象编程的使用非常广泛,本文 ...

  8. python如何运行py程序_如何用Python汇款:Web3.py教程

    Python开发人员对于以太坊和区块链库的技术练习. 警告:下面的教程包含这些元素:显式加密.点对点金融服务以及可能的违规行为.这些例子仅仅是为了说明Python区块链的强大功能和便捷性. 嗨,Pyt ...

  9. python中的列表理解_掌握『Python列表理解』需要知道的9件事,你知道了吗?

    越来越多的人开始学习Python,它已经成为最流行的编程语言之一,这几乎发生在所有领域.比如网络开发.科学计算,当然还有人工智能. 无论想用python干什么,都绕不开学习Python的数据结构.变量 ...

  10. 【转载】关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型...

    下面的内容来自:http://www.cnblogs.com/blueskylcc/p/5332642.html, 对方也是转的,不过没有找到转载的出处: 1.#!/usr/bin/python 是用 ...

最新文章

  1. 快速开发一个自定义 Spring Boot Starter ,希望你也会
  2. Win XP系统的开机菜单具体含义
  3. 使用 Autofac 进行依赖注入
  4. gprs连接中断记录_请收好!脉搏波血压计连接天天血压APP使用指南
  5. 图像处理之基础---图像高效不失真缩放既卷积应用
  6. 如何獲得GridView內LinkButton的RowIndex? (初級) (.NET) (ASP.NET) (轉載)
  7. 塘沽十三中2021年高考成绩查询,2020天津高考成绩查询
  8. pdf虚拟打印机下载win7_闪电PDF虚拟打印机使用教程,超级简单的方法
  9. atitit.抽奖活动插件组件设计--结构设计and 抽奖流程建模
  10. 两年时间,年薪从16到45,一个30岁程序猿的碎碎念
  11. 反射的学习(参考尚硅谷视频)
  12. 端口扫描php,PHP实现在线端口扫描
  13. FPGA 主流芯片选型指导和命名规则(一)
  14. ubuntu打开网易云音乐
  15. 软考信息系统监理师:2016年4月22日作业
  16. 解决 macbook m1 苹果笔记本电脑 关闭盖子 休眠
  17. Docker配置mc服务器
  18. AutoLayout(自动布局)入门
  19. 基于PSO工具箱的函数寻优算法
  20. 2021 前端 VUE 面试题总汇

热门文章

  1. 数字图像处理实验(8):PROJECT 04-04,Highpass Filtering Using a Lowpass Image
  2. protobuf中 repeated[Ptr]Field的序列化
  3. Kubernetes1.5新特性(一):Kubelet API增加认证和授权能力
  4. 用node搭一个静态服务
  5. shell脚本(查看多台服务器端口)
  6. 要不来重新认识Spring事务?三歪又学到了
  7. 为什么大部分人做不了架构师?这2点是关键
  8. 深入Lock锁底层原理实现,手写一个可重入锁
  9. 2020 年 DevOps 七大发展趋势
  10. 不懂卷积神经网络?别怕,看完这几张萌图你就明白了