Python的平凡之路(7)
# -*- coding: encoding -*-
#静态方法
class Dog(object):
def __init__(self,name):
self.name = name
@staticmethod #把eat方法变为静态方法,1 调用时主动传实例本身到eat 2 去掉eat()方法中的self参数
def eat(): #例子中取的是第二种方法
print("chenronghua is eating")
d = Dog("chenronghua")
#d.eat(d)也是可行的,但是eat方法中要传self参数
d.eat()
# -*- coding: encoding -*-
#类方法
#类方法只能访问类变量,不能访问实例变量
class Dog(object):
name = "我是类变量!"
def __init__(self,name):
self.name = name
@classmethod #注意缩进,要和上边的构造函数保持一致
def eat(self):
print("%s is eating" % self.name)
d = Dog("chenronghua")
d.eat()
# -*- coding: encoding -*-
class Dog(object):
name = 'alex'
def __init__(self,name):
self.name = name
@property #加上此方法,可以把下边的方法看成Dog类的一个属性,一次装饰有效
def eat(self):
print("%s is eating" %self.name)
@classmethod #类方法
def drink(self):
print("%s is drinking" %self.name)
@staticmethod
def full(self):
print("%s is full up" %self.name)
d = Dog("chenronghua")
#调用属性方法下的eat属性
d.eat
#调用类方法下的drink方法
d.drink()
#调用静态方法下的eat方法
# -*- coding: encoding -*-
#对属性方法进行练习
class Flight(object):
def __init__(self,name):
self.flight_name = name
def checking_status(self):
print("checking flight %s status..." %self.flight_name)
#return 1
@property #静态属性
def flight_status(self,status):
#status = self.checking_status() #把上边的属性传递到下边?
if status == 0:
print("flight got canceled...")
elif status == 1:
print("flight is arrived...")
elif status == 2:
print("flight has departured already...")
else:
print("cannot confirm the fight status...please check later")
@flight_status.setter #修改
def flight_status(self,status):
status_dic = {
0:"canceled",
1:"arrived",
2:"departured"
}
print("\033[31;1mHas changed the flight status to \033[0m",status_dic.get(status) )
@flight_status.deleter #删除
def flight_status(self):
f.checking_status()
f.flight_status = 1 #触发flight_status.setter
del f.flight_status #触发flight_status.deleter
class film(object):
"""谍影重重5已经上映了,非常不错"""
def __init__(self,name):
self.name = name
def func(self):
"""这个功能还没定义,只是占个位子"""
print("it's about %s" %self.name)
print(film.__doc__)
t = film('spy')
def __init__(self):
pass
def __call__(self, name,*args, **kwargs):
self.name = name
obj('www.we.com') # 执行 __call__
class Province:
country = 'China'
def __init__(self, name, count):
self.name = name
self.count = count
def func(self, *args, **kwargs):
print(Province.__dict__)
print(obj1.__dict__)
# 获取 对象obj1 的成员
print(obj2.__dict__)
# 获取 对象obj1 的成员
# 输出:{'count': 3888, 'name': 'HeNan'}
class Foo:
def __str__(self):
return '这是要返回的值!'
obj = Foo()
print(obj)
# 输出:这是要返回的值
#Author is wspikh
# -*- coding: encoding -*-
class Foo(object):
def __getitem__(self,key):
print('__getitem__',key)
def __setitem__(self,key,value):
print('__setitem__',key,value)
def __delitem__(self,key):
print('___delitem__',key)
obj = Foo()
result = obj['k1']
obj['k2'] = 'alex'
import importlib
__import__ ( 'import_lib.metaclass' ) #这是解释器自己内部用的 #importlib.import_module('import_lib.metaclass') #与上面这句效果一样,官方建议用这个 |
#!/usr/bin/env python
#Author is wspikh
# -*- coding: encoding -*-
#hasattr 和 getattr都是内建函数
class A:
def __init__(self):
self.name = 'zhangjing'
#self.age = 24 def method(self):
print("method print") Instance = A()
print(getattr(Instance,'name','not find')) #如果Instance对象中有属性
#name则打印self.name的值,否则就打印'not find
print(getattr(Instance,'age','not find')) #如果Instance对象中有属性age则打印self.age的值,否则打印'not find'
print(getattr(A,'method','default')) #如果有方法method,就打印其地址,否则打印default
#print(getattr(A,'method','default'))() #如果有方法method,运行函数并打印None否则打印default #hasattr getattr setattr练习
class Employee:
'所有员工的基类'
empCount = 0 def __init__(self, name, salary):
self.name = name
self.salary = salary
#加1
Employee.empCount += 1 def displayCount(self):
print("Total Employee %d" % Employee.empCount) def displayEmployee(self):
print("Name : ", self.name, "\nSalary: ", self.salary) Xiaoxiao = Employee('Xiaoxiao', 2000)
setattr(Xiaoxiao, 'age', 21) Tiny = Employee("Tiny", 5000)
setattr(Tiny, 'age', 23) print("实例类的第一个对象 Xiaoxiao ");
print('Xiaoxiao 是否存在age属性:', hasattr(Xiaoxiao, 'age'))
Xiaoxiao.displayEmployee();
print("Age:", getattr(Xiaoxiao, 'age', 'not find'));
#对象中是否有SEX属性,有就返回值,没有就返回not find
print("Sex:", getattr(Xiaoxiao, 'sex', 'not find'));
print("\n") print("实例类的第二个对象 Tiny")
print('Tiny 是否存在age属性:', hasattr(Tiny, 'age'))
Tiny.displayEmployee()
print("Age: ", getattr(Tiny, 'age', 'not find')); print("\n")
print("Total Employee number: %d" % Employee.empCount)
print("\n")
- 如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
- 如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句
# -*- coding: encoding -*-
"""import sys,traceback
try:
a = 1
b = a
c = w
except Exception as e:
print(Exception,":",e)
try:
a = b
b = c
except:
f = open('log.txt','a')
traceback.print_exc(file=f)
f.flush()
f.close()
"""
try:
fh = open('testfile','w')
print("Error: 没有找到文件或读取文件失败")
else:
print("内容写入文件成功")
Python的平凡之路(7)的更多相关文章
- Python的平凡之路(8)
(本文是对平凡之路(7)的补充等) 一.动态导入模块 import importlib __import__('import_lib.metaclass') #这是解释器自己内部用的 #importl ...
- Python的平凡之路(20)
(提问复习为主) 一.Django请求的生命周期 武彦涛: 路由系统 -> 视图函数(获取模板+数据=>渲染) -> 字符串返回给用户 二.路由 ...
- Python的平凡之路(19)
一.Django请求生命周期 对于所有的web框架来说本质就是一个socket服务端,浏览器是socket客户端 ...
- Python的平凡之路(18)
一.JS 正则部分 test - 判断字符串是否符合规定的正则rep = /\d+/;rep.test("asdfoiklfasdf89asdfasdf")# truerep ...
- Python的平凡之路(16)
一.HTML+CSS补充 0.常用页面布局 <!DOCTYPE html> <html lang="en"><head> <meta ch ...
- Python的平凡之路(13)
一.Python的paramiko模块介绍 Python 的paramiko模块,该模块和SSH用于连接远程服务器并执行相关操作 SSH client 用于连接远程服务器并执行基本命令 基于用户名和密 ...
- Python的平凡之路(12)
一.数据库介绍 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数据存储在文件中,但 ...
- Python的平凡之路(11)
一. rabbitmq 1 进程Queue: 父进程与子进程进行交互,或者同属于同一父进程下多个子进程进行交互 2 队列通信: send1.py #!/usr/bin/env python#Au ...
- Python的平凡之路(10)
异步IO 数据库 队列 缓存 1.Gevent协程 定义:用户态的轻量级线程.协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下 ...
- Python的平凡之路(9)
一.Paramiko模块练习 1. Paramiko模块介绍 Paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接 2 .SSHclie ...
随机推荐
- [课程设计]Scrum 2.6 多鱼点餐系统开发进度(下单一览页面-菜式添加功能实现)
Scrum 2.6 多鱼点餐系统开发进度 (下单一览页面-菜式添加功能实现) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题 ...
- [问题2014S10] 复旦高等代数II(13级)每周一题(第十教学周)
[问题2014S10] 设 \(A,B\) 为 \(n\) 阶方阵, 证明: \(AB\) 与 \(BA\) 相似的充分必要条件是 \[\mathrm{rank}\big((AB)^i\big)=\ ...
- zabbix通过API创建交换机模板,ifAdminStatus;ifOperStatus;ifInUcastPkts;ifAlias
最终效果: 目的: 通过zabbix的Latest data查看主机就可以看到其监控结果. 监控项: # 管理状态 IF-MIB::ifAdminSt ...
- C#相等性比较
本文阐述C#中相等性比较,其中主要集中在下面两个方面 ==和!=运算符,什么时候它们可以用于相等性比较,什么时候它们不适用,如果不使用,那么它们的替代方式是什么? 什么时候,需要自定一个类型的相等性比 ...
- js之oop <三>属性标签
读取属性标签 获取对象属性标签,用 Object.getOwnPropertyDescriptor方法.getOwnPropertyDescriptor(); 参数:属性所在对象(object),属性 ...
- Oracle数据库字段类型说明
目前Oracle 数据库大概有26个字段类型,大体分为六类,分别是字符串类型.数字数据类型.日期时间数据类型.大型对象(LOB)数据类型.RAW和LONG RAW数据类型.ROWID和UROWID数据 ...
- Android OkHttp完全解析 是时候来了解OkHttp了
Android OkHttp完全解析 是时候来了解OkHttp了 标签: AndroidOkHttp 2015-08-24 15:36 316254人阅读 评论(306) 收藏 举报 分类: [an ...
- vs 2005 使用 boost regex
第一步: Boost 入门及其VS2005下编译boost库 boost.regex库安装指南 深入浅出之正则表达式(一) C++中三种正则表达式比较(C regex,C ++regex,boo ...
- CSS 3 盒子属性
#box1{ width: 100px;height: 40px; border: 1px solid black;(1)内容沾满盒子的处理方式 所有的都要添加前缀,以便更好的浏览器兼容 1,ove ...
- Eclipse+Tomcat+MAVEN+SVN项目完整环境搭建
1.JDK的安装 首先下载JDK,这个从sun公司官网可以下载,根据自己的系统选择64位还是32位,安装过程就是next一路到底.安装完成之后当然要配置环境变量了. ————————————————— ...