Python进阶---面向对象第三弹(进阶篇)
Python对象中一些方法
一、__str__
class Teacher:
def __init__(self,name,age):
self.name=name
self.age=age
self.courses=[]
def teach(self):
print('%s teach' %self.name)
def __str__(self):
return '<name:%s age:%s>' %(self.name,self.age)
class Course:
def __init__(self,name,price,period):
self.name=name
self.price=price
self.period=period
def __str__(self):
return '《name:%s price:%s period:%s》' %(self.name,self.price,self.period)
# egon=Teacher('egon',18)
# print(egon) #egon.__str__()
# print(egon) #egon.__str__()
二、__del__用法
import time
# class Foo:
# def __init__(self,x):
# self.x=x
# print('connect mysql') #conn=abcdef('192.168.1.10',3306)
#
# def __del__(self):
# '''做一些与这个对象有关的清理操作'''
# # conn.close()
# # file.close()
# print('====>')
# f=Foo(10)
# del f #f.__del__()
# time.sleep(3)
# print('主程序')
三、item用法
可以实现类于dic['a']这样的方法
# l=['a','b','c']
# dic={'a':1}
#
# print(l[1])
# print(dic['a'])
class Foo:
def __init__(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
def __getitem__(self, item):
# print(self,item,type(item))
# return getattr(self,item)
return self.__dict__[item]
def __setitem__(self, key, value):
# setattr(self,key,value)
self.__dict__[key]=value
def __delitem__(self, key):
# delattr(self,key)
self.__dict__.pop(key)
def __len__(self):
return 10
f=Foo('egon',18,'male')
# print(f.name) #f['name']
# print(f.age) #f['age']
# print(f.sex) #f['sex']
# print(f['name'])
# f['name']='egon_nb'
# print(f.__dict__)
# del f['name']
# print(f.__dict__)
print(len(f))
四、isinstance和issubclass
isinstance(obj,cls)检查是否obj是否是类 cls 的对象
class Foo(object):
pass
obj = Foo()
isinstance(obj, Foo)
issubclass(sub, super)检查sub类是否是 super 类的派生类
class Foo(object):
pass
class Bar(Foo):
pass
issubclass(Bar, Foo)
五、反射
class Teacher:
# school='oldboy'
# def __init__(self,name,age):
# self.name=name
# self.age=age
#
# def teach(self):
# print('%s teach' %self.name)
# print(Teacher.school)
# print(Teacher.__dict__['school'])
# print(hasattr(Teacher,'school'))
# print(getattr(Teacher,'school'))
# print(getattr(Teacher,'solasdf',None))
# Teacher.x=123
# setattr(Teacher,'x',123)
# print(Teacher.x)
# delattr(Teacher,'school')
# print(Teacher.school)
#对象
# t=Teacher('egon',18)
# print(hasattr(t,'name'))#判断对象是否有name属性(“以字符串的方式”)
# print(getattr(t,'name'))#获取对象的name属性(“以字符串的方式”)
# setattr(t,'sex','male')#修改对象的sex属性(“以字符串的方式”)
# print(getattr(t,'sex'))
#
# print(t.__dict__)
# delattr(t,'name')
# print(t.__dict__)
# t.teach()
# print(t.school)
# print(getattr(t,'teach'))
# print(getattr(t,'school'))
# t.school='hahahahahahahahahhahahahahahhahahahahahahh'
# print(t.__dict__)
Python进阶---面向对象第三弹(进阶篇)的更多相关文章
- Python:Scrapy(三) 进阶:额外的一些类ItemLoader与CrawlSpider,使用原理及总结
学习自:Python Scrapy 爬虫框架实例(一) - Blue·Sky - 博客园 这一节是对前两节内容的补充,涉及内容为一些额外的类与方法,来对原代码进行改进 原代码:这里并没有用前两节的代码 ...
- C++进阶 面向对象基础(三)
类的的定义: 初始化一般建议使用构造函数初始化列表形式: Person(const string nm, const string addr):name(nm), address(addr){} th ...
- 浅谈Hybrid技术的设计与实现第三弹——落地篇
前言 接上文:(阅读本文前,建议阅读前两篇文章先) 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 根据之前的介绍,大家对前端与Native的交互应该有一些简单的认识了,很多 ...
- [Python3] 023 面向对象 第三弹
目录 7. 类相关函数 8. 类的成员描述符(属性) 9. 类的内置属性 10. 类的常用魔术方法 10.1 操作类 10.2 描述符 10.3 属性操作 10.4 运算分类相关魔术方法 接上一篇 [ ...
- Python之路(第三十八篇) 并发编程:进程同步锁/互斥锁、信号量、事件、队列、生产者消费者模型
一.进程锁(同步锁/互斥锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 而共享带来的是竞争,竞争带来的结果就是错乱,如何控制,就是加锁处理. 例 ...
- Python之路(第三十六篇)并发编程:进程、同步异步、阻塞非阻塞
一.理论基础 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内容都是围绕进程的概念展开的. 即使可以利用的cpu只有一个(早期的 ...
- Python之路(第三十五篇) 并发编程:操作系统的发展史、操作系统的作用
一.操作系统发展史 第一阶段:手工操作 —— 真空管和穿孔卡片 第一代之前人类是想用机械取代人力,第一代计算机的产生是计算机由机械时代进入电子时代的标志,从Babbage失败之后一直到第二次世界大 ...
- Python之路(第三十二篇) 网络编程:udp套接字、简单文件传输
一.UDP套接字 服务端 # udp是无链接的,先启动哪一端都不会报错 # udp没有链接,与tcp相比没有链接循环,只有通讯循环 server = socket.socket(socket.AF_I ...
- Python网络爬虫第三弹《爬取get请求的页面数据》
一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...
随机推荐
- [js插件开发教程]一步步开发一个可以定制配置的隔行变色小插件
隔行变色功能,不用js,直接用css伪类就可以做,这个实例可以作为js插件开发很好的入门级实例.本文实现的隔行变色包括以下功能: 1,支持2种常用结构共存( div元素 和 表格类型 ) 2,一个页面 ...
- jquery层次选择器:空格 > next + nextAll ~ siblings
全栈工程师开发手册 (作者:栾鹏) jquery系列教程1-选择器全解 jquery层次选择器 jquery层次选择器,包括空格.>.next.+.nextAll.~.siblings等函数或表 ...
- VS2010 c/c++ 本地化 emscripten 配置
配置环境 1.下载emsdk-1.35.0-full-64bit.exe,有VS2010的话直接安装. 2.安装好之后,打开cmd,# emsdk update # emsdk install lat ...
- python 携带cookie访问网站(python接口测试post)
最近在使用自己研究性能测试工具的时候想到,使用python向服务器不断发送数据以作为并发测试.大概情况如下: #coding=utf-8 import urllib2 import urllib im ...
- vim 自动在操作符 前后加上空格 C语言
function! Align_Space() let current_line = getline('.') let replacement = substitute(current_line,'\ ...
- Coursera_程序设计与算法_计算导论与C语言基础_数组应用练习
您也可以在我的个人博客中阅读此文章:跳转 编程题#1:求字母的个数 描述 在一个字符串中找出元音字母a,e,i,o,u出现的次数. 输入 输入一行字符串(字符串中可能有空格,请用gets(s)方法把一 ...
- Fork/Join-Java并行计算框架
Java在JDK7之后加入了并行计算的框架Fork/Join,可以解决我们系统中大数据计算的性能问题.Fork/Join采用的是分治法,Fork是将一个大任务拆分成若干个子任务,子任务分别去计算,而J ...
- MYSQL 总结
1.数据库实质中访问的是 DBMC,数据库是一种存储介质 2.groub by 与 having 理解 group by 有一个原则,select后面的所有列中,没有使用聚合函数的列必须出现在 gro ...
- 谈谈你对web标注和W3c的理解和认识
web标准简单来说可以分为结构.表现和行为.其中结构主要是有HTML标签组成.表现即指css样式表,通过css可以是页面的结构标签更具美感.行为是指页面和用户具有一定的交互,同时页面结构或者表现发生变 ...
- Python Nose框架编写测试用例方法
1. 关于Nose nose项目是于2005年发布的,也就是 py.test改名后的一年.它是由 Jason Pellerin 编写的,支持与 py.test 相同的测试习惯做法,但是这个包更容易安装 ...