#coding:utf-8

 #定义一个装饰器函数
def doc_func(func): #包裹函数(闭包)
def warpfunc():
#做一些额外的事情
print "%s called" %(func.__name__)
func() return warpfunc @doc_func
def foo():
print "hello" @doc_func
def bar():
print "nihao" if __name__== "__main__":
foo() bar()
Ace 10:38:59 (多人发送)
#coding:utf-8 class Student:
'''学生类'''
def __init__(self, name, age):
'''构造函数init'''
print "__init__ ..."
self.name = name
self.age = age #python中的成员方法 一定要有个形参 self,表示调用该方法的对象本身 def showMe(self):
'''普通成员方法'''
print "showMe()..."
print self.name
print self.age def __del__(self):
'''析构函数'''
print "__del__..." if __name__ == "__main__":
s1 = Student("zhang3", 18)
s1.showMe() s2 = Student("li4", 20)
s2.showMe()
Ace 10:55:01 (多人发送)
#coding:utf-8 class Student:
'''学生类''' #如果一个变量 直接定义在类里面,而不是某个 成员变量里
#而且没有self, 这个变量是数据类的变量(对应c++就是静态成员变量)
school = "itcast" def __init__(self, name, age):
'''构造函数init'''
print "__init__ ..."
self.name = name
##如果给以普通成员变量+ __age 表示私有
self.__age = age #python中的成员方法 一定要有个形参 self,表示调用该方法的对象本身 def showMe(self):
'''普通成员方法'''
print "showMe()..."
print self.name
print self.__age
print Student.school def getAge(self):
return self.__age def __del__(self):
'''析构函数'''
print "__del__..." if __name__ == "__main__":
s1 = Student("zhang3", 18)
s1.showMe()
print s1.getAge() print "*"*20
s2 = Student("li4", 20)
s2.showMe() print "*"*20
Student.school = "itheima"
s1.showMe()
Ace 11:23:47 (多人发送)
#coding:utf-8 class Student: #静态成员变量
age = 18 def __init__(self, name, age):
self.name = name #对象方法
def showme(self):
#对象变量
print self.name
print Student.age #这个方法是一个类的方法,(静态的方法)
#类方法
@classmethod
def showme2(cls):
#类变量
print cls.age if __name__=="__main__":
s1 = Student("zahng3", 18)
s1.showme()#普通方法 #python调用静态成员方法
Student.showme2()
Ace 11:36:34 (多人发送)
#coding:utf-8 class Person:
'''人类''' def __init__(self, name):
'''人类的构造函数'''
print "Person __init___"
self.name = name def show(self):
'''人类的show()'''
print "Person showme()"
print self.name class Student(Person):
'''学生类''' def __init__(self, name, age):
#c++中 如果子类继承父类,调用子类的构造,会自动调用父类构造o
#python中并不是这样,需要手动调用父类构造函数,来初始化继承过来的变量
Person.__init__(self, name)
print "Student __init___"
self.age = age def show(self):
print "Student showme()"
print self.name
print self.age if __name__=="__main__":
s1 = Student("zhang3", 18)
s1.show() p1 = Person("li4")
p1.show()
Ace 11:59:57 (多人发送)
#coding:utf-8
#import test20#将test20 模块中的全部方法 和类 全部引入到此文件中
#但是使用的时候需要加test20.func1 #from test20 import func1 #仅仅引入其中一个方法 要保证此方法 在其他模块没有重名,
#from test20 import func2
from test20 import * func1()
func2()

python 高级语法的更多相关文章

  1. Python高级语法之:一篇文章了解yield与Generator生成器

    Python高级语法中,由一个yield关键词生成的generator生成器,是精髓中的精髓.它虽然比装饰器.魔法方法更难懂,但是它强大到我们难以想象的地步:小到简单的for loop循环,大到代替多 ...

  2. Python高级语法总结

    1.Python面向对象 创建类 使用class语句来创建一个新类,class之后为类的名称并以冒号结尾,如下实例: class ClassName: '类的帮助信息' #类文档字符串 class_s ...

  3. 网络编程-Python高级语法-装饰器

    理论:装饰器就是运行一个函数之前首先运行装饰器函数,python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使用python装饰器的好处就是在不用更改原函数 ...

  4. 网络编程-Python高级语法-property属性

    知识点: 一.什么是property属性? 一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法,Python的property属性的功能是:property属性内部进行一系列的逻辑计算,最 ...

  5. 网络编程-Python高级语法-GIL全局解释器锁

    知识点:GIL全局解释器锁其实和Python没有任何关系,是由于当初编写Python解释器时留下的,它只对多线程有影响,GIL保证同一时刻只有一个线程在运行,即使是多核配置电脑,同一时刻也只会让一个线 ...

  6. python高级语法进阶

    python中几个比较难懂概念进阶. 迭代器 实现了迭代器协议的容器对象,基于如下两个方法: __next__:返回容器的下一个元素 __iter__:返回迭代器本身 由此可见,如果要自定义一个迭代器 ...

  7. Python高级语法-贯彻回顾-元类(4.99.1)

    @ 目录 1.为什么要掌握元类 2.正文 关于作者 1.为什么要掌握元类 在django中编写models的时候遇到了元类的相关操作 并且在mini-web框架编写的时候也遇到了相关的问题 意识到深入 ...

  8. Python高级语法-对象实例对象属性-类与实例,class方法静态方法等(4.6.1)

    @ 目录 1.说明 2.代码 关于作者 1.说明 python中属性:类属性,实例属性 方法:类方法,实例方法,静态方法 想修改类属性,只能是类方法,因为只有类方法把cls(类)传入数据里面 静态方法 ...

  9. 网络编程-Python高级语法-闭包

    什么叫闭包?通俗来说就是函数里嵌套函数,从表现形式来看,内部函数引用外部函数的作用域里的变量,那么内部函数就称为闭包 举例说明: 1.闭包=函数块+定义函数时的环境,inner就是函数块,x就是环境 ...

随机推荐

  1. 20162307 实验三 敏捷开发与XP实践

    实验三 <敏捷开发与XP实践> 北京电子科技学院(BESTI) 实 验 报 告 课程:程序设计与数据结构 班级:1623 姓名:张韵琪 学号:20162307 指导教师:娄佳鹏老师.王志强 ...

  2. SourceTree运行慢的解决方案

    以下两个Git命令可以解决SourceTree运行慢: git gc git prune 可以在SourceTree点击命令行模式打开Git命令行窗口输入,等待片刻执行完成,SourceTree的运行 ...

  3. Erlang学习记录(一)——Windows下的环境搭建

    一.安装编译器 在http://www.erlang.org/download.html下载R16B01 Windows Binary File并安装. 二.运行编译器 安装完编译器后,打开安装目录下 ...

  4. MySQL 连接错误Can't connect to MySQL server on (61)

    链接数据库时忽然遇到一个问题.Mac Navicat链接时报错Can’t connect to MySQL server on ‘xx.xx.xx.xx’ (61). PS. win版Navicat ...

  5. [Linux Memory] 用/proc/stat计算cpu的占用率

    转载自:http://blog.csdn.net/pppjob/article/details/4060336 在Linux下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时 ...

  6. 三.rocketmq-console

    ⦁    rocketmq-console来源于https://github.com/rocketmq/rocketmq-console 1.配置IP 2.启动运行:出现此信息则表示成功  访问:in ...

  7. [转]SSIS高级转换任务—在Package中是用临时表是需要设置RetainSameConnection属性

    本文转自:http://www.cnblogs.com/tylerdonet/archive/2011/05/20/2052306.html 在上一个导入列这个例子中我们创建一个实际的表来存储文件路径 ...

  8. 算法之排序Low B三人组

    有序区:有的地方的数据已经完全变得有顺序,我们把这部分区域的数据成为有序区无序区:有的地方的数据依旧无序,我们把这部分数据成为无序区时间复杂度:用来估计算法运行时间的一个式子(单位)空间复杂度:用来评 ...

  9. C语言i++和++i的区别和指针*(a++)和*(++a)的区别

    i++ :先引用后增加++i :先增加后引用i++ :先在i所在的表达式中使用i的当前值,后让i加1 ++i :让i先加1,然后在i所在的表达式中使用i的新值 一.c语言中i++和++i的运行效果是不 ...

  10. a<<=n

    a<<=n等价于a=a<<na<<n表示a左移n位(二进制)等价于a乘以2的n次方 a<<=n的含义就是,a等于a乘以2的n次方