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( ...
随机推荐
- MVP 实战
那么我们下面就要将这个类中的代码改写为 MVP 的写法,回顾上面提及的 MVP 架构的思想,它是将 View 层与 Model 层彻底隔离,意味着 View 和 Model 都不再持对方的引用,它们通 ...
- 冲刺周六 Fighting SaturDay
一.Saturday照片 二.项目分工 三.今日份燃尽图 四.项目进展 码云团队协同环境构建完毕 利用Leangoo制作任务分工及生成燃尽图 完成AES加解密部分代码 用代码实现对文件的新建.移动.复 ...
- Android SDK Android NDK Android Studio 官方下载地址<转>
转自:http://www.cnblogs.com/yaotong/archive/2011/01/25/1943615.html 2016.10Android Studio 2.2.1.0https ...
- Linux内核调试方法总结之反汇编
Linux反汇编调试方法 Linux内核模块或者应用程序经常因为各种各样的原因而崩溃,一般情况下都会打印函数调用栈信息,那么,这种情况下,我们怎么去定位问题呢?本文档介绍了一种反汇编的方法辅助定位此类 ...
- 建立起BI的支撑团队
Bobby Luo 罗如意(18907295660@189.cn) 2011年7月 http://weibo.com/cquptvlry 电子商务中的BI应用初探 系统架构 对整个数据仓库的架构进行规 ...
- Spring命名空间引入方法
spring 整合了各种工具,并且spring提供了对各种工具的xml scheme 的配置方式,简化了开发. 但是对于各种工具的xml命名空间的引入,我一直很郁闷,不知道应该怎样引入,今天经过摸索发 ...
- Node.js中package.json中库的版本号详解(^和~区别)
当我们查看package.json中已安装的库的时候,会发现他们的版本号之前都会加一个符号,有的是插入符号(^),有的是波浪符号(~).那么他们到底有什么区别呢?先贴一个例子,对照例子来做解释: &q ...
- <meta>标签中http-equiv属性的属性值X-UA-Compatible详解
X-UA-Compatible是针对IE8新加的一个设置,对于IE8之外的浏览器是不识别的,这个区别与content="IE=7"在无论页面是否包含<!DOCTYPE> ...
- 【译】Redux 还是 Mobx,让我来解决你的困惑!
原文地址:Redux or MobX: An attempt to dissolve the Confusion 原文作者:rwieruch 我在去年大量的使用了 Redux,但我最近都在使用 Mob ...
- Knight Moves (双向bfs)
# 10028. 「一本通 1.4 例 3」Knight Moves [题目描述] 编写一个程序,计算一个骑士从棋盘上的一个格子到另一个格子所需的最小步数.骑士一步可以移动到的位置由下图给出. [算法 ...