python之路,day7-面向对象变成
2016-09-08 16:41
507 查看
本篇内容:
面向对象、类方法、属性方法
类的特殊方法
反射
异常处理
Socket开发基础
一、面向对象高级语法部分
静态方法:
#@staticmethod只是名义上归类管理,实际上跟类没什么关系
上面的调用会出以下错误,说是eat需要一个self参数,但调用时却没有传递,没错,当eat变成静态方法后,再通过实例调用时就不会自动把实例本身当作一个参数传给self了。
1. 调用时主动传递实例本身给eat方法,即d.eat(d)
2. 在eat方法中去掉self参数,但这也意味着,在eat中不能通过self.调用实例中的其它变量了
二、类方法
#@classmethod
只能访问类变量,不能访问实例变量
三、属性方法
列:
列2:@proerty.setter装饰器再装饰一下,需要写一个新方法, 对这个flight_status进行更改。
注意以上代码里还写了一个@flight_status.deleter, 是允许可以将这个属性删除
四:类的特殊成员
View Code
反射代码示例:
动态导入模块:
六、异常处理:
参考 http://www.cnblogs.com/wupeiqi/articles/5017742.html
七、Socket编程:
参考:http://www.cnblogs.com/wupeiqi/articles/5040823.html
面向对象、类方法、属性方法
类的特殊方法
反射
异常处理
Socket开发基础
一、面向对象高级语法部分
静态方法:
#@staticmethod只是名义上归类管理,实际上跟类没什么关系
class Dog(object): def __init__(self,name): self.name = name @staticmethod #把eat方法变为静态方法 def eat(self): print("%s is eating" % self.name) d = Dog("user") d.eat()
上面的调用会出以下错误,说是eat需要一个self参数,但调用时却没有传递,没错,当eat变成静态方法后,再通过实例调用时就不会自动把实例本身当作一个参数传给self了。
1. 调用时主动传递实例本身给eat方法,即d.eat(d)
2. 在eat方法中去掉self参数,但这也意味着,在eat中不能通过self.调用实例中的其它变量了
class Dog(object): def __init__(self,name): self.name = name @staticmethod def eat(): print(" is eating") d = Dog("user") d.eat()
二、类方法
#@classmethod
只能访问类变量,不能访问实例变量
class Dog(object): name = "类变量" def __init__(self,name): self.name = name @classmethod def eat(self): print("%s is eating" % self.name) d = Dog("user") d.eat() #执行结果: 类变量 is eating
三、属性方法
#@proprty 把一个方法变成一个静态属性 #@eat.setter 更改属性 #@eat.deleter 删除属性
class Dog(object): def __init__(self,name): self.name = name @property def eat(self): print(" %s is eating" %self.name) d = Dog("user") d.eat #输出结果: user is eating
列:
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 = 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 flight status...,please check later") f = Flight("CA980") f.flight_status
列2:@proerty.setter装饰器再装饰一下,需要写一个新方法, 对这个flight_status进行更改。
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 = 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 flight status...,please check later") @flight_status.setter #修改 def flight_status(self,status): status_dic = { : "canceled", :"arrived", : "departured" } print("\033[31;1mHas changed the flight status to \033[0m",status_dic.get(status) ) @flight_status.deleter #删除 def flight_status(self): print("status got removed...") f = Flight("CA980") f.flight_status f.flight_status = 2 #触发@flight_status.setter del f.flight_status #触发@flight_status.deleter
注意以上代码里还写了一个@flight_status.deleter, 是允许可以将这个属性删除
四:类的特殊成员
#类的特殊成员方法 1、__doc__ 表示类的描述信息
def delattr(x, y): # real signature unknown; restored from __doc__ """ Deletes the named attribute from the given object. delattr(x, 'y') is equivalent to ``del x.y'' """
View Code
反射代码示例:
class Foo(object): def __init__(self): self.name='abc' def func(self): return 'func' obj = Foo() hasattr(obj,'name') hasattr(obj,'finc') getattr(obj,'name') getattr(obj,'func') setattr(obj,'liudong',18) setattr(obj,'show',lambda num: num + 1) delattr(obj,'name') delattr(obj,'func')
动态导入模块:
import importlib __import__('import_lib.metaclass') #这是解释器自己内部用的 #importlib.import_module('import_lib.metaclass') #与上面这句效果一样,官方建议用这个
六、异常处理:
参考 http://www.cnblogs.com/wupeiqi/articles/5017742.html
七、Socket编程:
参考:http://www.cnblogs.com/wupeiqi/articles/5040823.html
相关文章推荐
- Python之路【第五篇】:面向对象及相关
- Python-Day7 面向对象进阶/异常处理/Socket
- python面向对象变成(1):类的基本概念
- python学习之路-7 模块configparser/xml/shutil/subprocess以及面向对象初级入门
- 转:Python之路,Day6 - 面向对象学习
- python学习之路-8 面向对象之进阶
- python 自动化之路 day 面向对象基础
- Python之路【第五篇】:面向对象和相关
- Python之路,Day6 - 面向对象学习
- Python面向对象变成 二
- python 自动化之路 day 07 面向对象基础
- python自我学习1--class 面向对象变成
- Python之路【第五篇】:面向对象及相关
- python 自动化之路 day 08 面向对象进阶
- python之路 面向对象基础 XML
- python——面向对象基础
- python之面向对象知识点总结
- python(三):面向对象实现之打飞机游戏
- python面向对象笔记
- 【Python】[面向对象高级编程] 多成继承,定制类,使用枚举