python面向对象--类的内置函数
#isinstance(obj,cls)判断obj是否是类cls的实例
#issubclass(cls,cls1)判断cls是否是cls1的子类或派生类
class Foo:
pass class Bar(Foo):
pass print(issubclass(Bar,Foo))#检查sub类是否是super类的派生类 f1=Foo()
print(isinstance(f1,Foo))#检查是否obj是否是类cls对象
#自定义格式化的format方法
x='{0}{0}{0}'.format("dog") print(x) format_dic={
'ymd':"{0.year}{0.mon}{0.day}",
"m-d-y":"{0.mon}-{0.day}-{0.year}",
"y:m:d":"{0.year}:{0.mon}:{0.day}"
} class Date:
def __init__(self,year,mon,day):
self.year=year
self.mon=mon
self.day=day def __format__(self, format_spec):#改写系统内置的format属性
print("我执行了")
print("-->",format_spec)
if format_spec:
fm=format_dic[format_spec]
return fm.format(d1)
else:
return "为空" d1=Date(2016,12,26)
#format(d1)#d1.__format__() print(format(d1))#d1.__format__() print(format(d1,"ymd")) d1.name="alex"
print(d1.name)
# x='{0.year}{0.mon}{0.day}'.format(d1)
# print(x)
###改变字符串的显示方法 str,repr # l=list("hello")
#
# print(l) # class Foo:
# def __str__(self):
# return "自己定制的对象的显示方式"
#
# f1=Foo()
# print(f1)#-->str(f1)-->f1.__str__() # file=open("test.txt","w")
# print(file) #自己定制str方法
class Foo:
def __init__(self,name,age):
self.name=name
self.age=age # def __str__(self):#当前str与repr共存
# return "这是str"
#
# def __repr__(self):#repr或者交互式解释器
# return "名字是%s 年龄是%s" %(self.name,self.age) f1=Foo("egon",19) #repr(f1)-->f1.__repr__() # print(f1)#str(f1)--->f1.__str__()----->f1.__repr__() f1.__str__()
print(str(f1))
#call方法,对象通过()访问
class Foo:
def __call__(self, *args, **kwargs):
print("实例执行了obj") f1=Foo() f1()#foo下的.__call__ Foo()#abc下的__call__
#通过类的next和iter实现迭代器协议
class Foo: def __init__(self,n):
self.n=n def __iter__(self):
return self def __next__(self):
if self.n==100:
raise StopIteration("终止了")
self.n+=1
return self.n # l=list('hello')
# for i in l:
# print(i) f1=Foo(10)
print(next(f1))
print(next(f1))
print(f1.__next__()) for i in f1: #f1.__iter__() ==iter(f1)
print(i)#next(f1) for循环捕捉异常终止 class Fib:
def __init__(self):
self.a=1
self.b=1 def __iter__(self):
return self def __next__(self):
self.a,self.b=self.b, self.a+self.b
if self.b>100:
raise StopIteration("终止了")
return self.a f1=Fib()
print(next(f1))
print(next(f1))
print(next(f1))
print(next(f1))
print(next(f1))
print(next(f1))
print(next(f1))
print(next(f1))
print("=====>")
for i in f1:
print(i)
class Foo:
# __slots__ = ["name","age"]#{"name":none,"age":"none"}
__slots__ = "name"#限定实例的数据属性,节省内存 f1=Foo()
f1.name="egon"
print(f1.name) #f1.age=18 #__setattr__---->f1.__dict__["age"]=18 # print(f1.__dict__) print(f1.__slots__)
print(f1.__slots__)
python面向对象--类的内置函数的更多相关文章
- Python 面向对象 (补充) , 反射 , 内置函数
面向对象中内置函数 issubclass方法: 检查第一个参数是否是第二个参数的子子孙孙类 返回 : 是一个布尔值 class Base(object): pass class Foo( ...
- python 面向对象 类的内置方法
判断是不是类cls的对象 class A: pass a = A() print(isinstance(a,A)) 判断类sub是不是super的子类 class A: pass class B(A) ...
- python面向对象--类的内置方法
#isinstance(obj,cls)判断obj是否是类cls的实例 #issubclass(cls,cls1)判断cls是否是cls1的子类或派生类 class Foo: pass class B ...
- python字符串——"奇葩“的内置函数
一.前言 python编程语言里的字符串与我们初期所学的c语言内的字符串还是有一定不同的,比如python字符串里的内置函数就比语言的要多得多:字符串内的书写格式也会有一点差异,例:字符串内含有引 ...
- Python标准库:内置函数hasattr(object, name)
Python标准库:内置函数hasattr(object, name) 本函数是用来判断对象object的属性(name表示)是否存在.如果属性(name表示)存在,则返回True,否则返回False ...
- python面向对象的多态-类相关内置函数-类内置魔法函数-迭代器协议-上下文管理-04
多态 一种事物具备不同的形态 例如:水 --> 固态.液态.气态 多态:# 多个不同对象可以相应同一个对象,产生不同的结果 首先强调,多态不是一种特殊的语法,而是一种状态,特性(多个不同对象可以 ...
- python基础语法20 面向对象5 exec内置函数的补充,元类,属性查找顺序
exec内置函数的补充 exec: 是一个python内置函数,可以将字符串的代码添加到名称空间中; - 全局名称空间 - 局部名称空间 exec(字符串形式的代码, 全局名称空间, 局部名称空间) ...
- python基础(14)-反射&类的内置函数
反射 几个反射相关的函数可参考python基础(10)-匿名函数&内置函数中2.2.4反射相关 类的一些内置函数 __str__()&__repr__() 重写__str__()函数类 ...
- Python学习日记(十一) 内置函数
什么是内置函数? 就是Python中已经写好了的函数,可以直接使用 内置函数图表: 以3.6.2为例 内置函数分类: 一.反射相关 1.hasattr() 2.getattr() 3.setattr( ...
随机推荐
- java.lang.OutOfMemoryError:GC overhead limit exceeded解决方
Tomcat异常信息: Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit excee ...
- [BZOJ2244]:拦截导弹(DP+CDQ分治+树状数组)
题目传送门 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度.并且能够拦截任意速度的导弹,但是以后每一发炮弹都不能高于 ...
- Deepin 系统安装并配置PHP开发环境
Deepin是由武汉深之度科技有限公司开发的Linux发行版.Deepin团队基于Qt/C++(用于前端)和Go(用于后端)开发了的全新深度桌面环境(DDE),以及音乐播放器,视频播放器,软件中心等一 ...
- qbzt day4 下午
有向图的强连通分量 强联通:两个点之间可以互相到达 如果某个图任意两个点都是强联通的,那么称这个图强联通 如果一个图的子图是强联通的,那么称这个图是强联通子图 一个图的极大强联通子图被称作强连通分量 ...
- (转)Jquery之ShowLoading遮罩组件
本文转载自:http://www.cnblogs.com/eczhou/archive/2012/12/18/2822788.html 一.遮罩用途及效果 ShowLoading这个jQuery插件设 ...
- Vue中解决路由切换,页面不更新的实用方法
前言:vue-router的切换不同于传统的页面的切换.路由之间的切换,其实就是组件之间的切换,不是真正的页面切换.这也会导致一个问题,就是引用相同组件的时候,会导致该组件无法更新,也就是我们口中的页 ...
- Golang 调用 aws-sdk 操作 S3对象存储
Golang 调用 aws-sdk 操作 S3对象存储 前言 因为业务问题,要写一个S3对象存储管理代码,由于一直写Go,所以这次采用了Go,Go嘛,快,自带多线程,这种好处就不用多说了吧. 基础的功 ...
- js(javascript)取float型小数点后两位数的方法
以下我们将为大家介绍 JavaScript 保留两位小数的实现方法:四舍五入以下处理结果会四舍五入: ? 1 2 var num =2.446242342; num = num.toFixed(2); ...
- vue猜数字游戏
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- pandas入门(1)
import pandas as pd import numpy as np # 自动创建索引 obj = pd.Series([4, 7, -5, 2]) print(obj, type(obj)) ...