#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. nginx和php-fpm的用户权限

    启动php-fpm sudo php-fpm -c /etc/php.ini [17-Sep-2018 00:36:59] ERROR: [pool www] please specify user ...

  2. HDU 4635 Strongly connected (2013多校4 1004 有向图的强连通分量)

    Strongly connected Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  3. 探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用23

    前言 首先说明这并不是一个教程贴,而记事本应用是网上早有的案例,对于学习 vuex 非常有帮助.我的目的是探索 vuex 2.0 ,然后使用 vuejs 2.0 + vuex 2.0 重写这个应用,其 ...

  4. TDocVariantData解析JSON

    TDocVariantData解析JSON var json: RawUTF8; doc: TDocVariantData; i: integer;begin DataBase := TOleDBMS ...

  5. cocos2d-x 3.0 CCTime 的改动

    在cocos3.0 中,去掉了CCTimer这个类. 我们须要把之前的代码改动为 定义时间的变量是 struct  timeval  start 1.获取时间的方式是: gettimeofday(&a ...

  6. 各种语言性能(CPU密集型程序)比较

    都进行Fib数列计算,计算到n=40的计算时间: 注意:开始,我以为上图中的第二列就是代表C++的性能.但是现在发现,完全不正确. 如果你使用同样的抽象和同样的逻辑去实现同样的代码,C和C++的性能几 ...

  7. shell学习:几道常见shell习题

    1. 编写shell脚本,计算1-100的和: #! /bin/bash sum=0 for i in `seq 1 100`; do sum=$[$i+$sum] done echo $sum 计算 ...

  8. Ubuntu中Git服务器搭建

    git服务器搭建过程 参考网上资料搭建git服务器过程记录 如下: 需求 硬件需求:一台Ubuntu或者debian电脑(虚拟机),能通过网络访问到. 软件需求:git-core, gitosis, ...

  9. [置顶] (奇迹冬瓜)坦克大战[MFC框架]

    经过二次整合 重新放出MFC框架下的坦克大战 采用小窗口 多线程 双缓冲 动画帧化 碰撞检测 接口封装 混音 事件延迟等 力求做到代码与美工的双向化 开场动画 界面一 界面二 游戏界面 结束动画 零积 ...

  10. Ubuntu切换root用户权限

    其实方法很简单,就是需要选对自己使用的linux系统,不同分支的系统切换root的方法不一定一样. Ubuntu切换root的方法很简单,首先一档钱管理员命令执行: sudo passwd root ...