#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)
 

python面向对象--类的内置方法的更多相关文章

  1. python 面向对象 类的内置方法

    判断是不是类cls的对象 class A: pass a = A() print(isinstance(a,A)) 判断类sub是不是super的子类 class A: pass class B(A) ...

  2. python面向对象 : 反射和内置方法

    一. 反射 1. isinstance()和issubclass() isinstance( 对象名, 类名) : 判断对象所属关系,包括父类  (注:type(对象名) is 类名 : 判断对象所属 ...

  3. Python面向对象编程及内置方法

    在程序开发中,要设计一个类,通常需要满足以下三个要求: [1]类名 这类事物的名字,满足大驼峰命名法 [2]属性 这类事物具有什么样的特征 [3]方法 这类事物具有什么样的行为 定义简单的类: 定义只 ...

  4. python 面向对象反射以及内置方法

    一.反射 什么是反射:可以用字符串的方式去访问对象的属性,调用对象的方法(但是不能去访问方法),python中一切皆对象,都可以使用放射. 反射的四种方法: hasattr:hasattr(objec ...

  5. python面向对象--类的内置函数

    #isinstance(obj,cls)判断obj是否是类cls的实例 #issubclass(cls,cls1)判断cls是否是cls1的子类或派生类 class Foo: pass class B ...

  6. day28 面向对象:反射,内置函数,类的内置方法

    面向对象进阶博客地址链接: http://www.cnblogs.com/Eva-J/articles/7351812.html 复习昨日内容: # 包 # 开发规范 # # hashlib # 登录 ...

  7. python学习之老男孩python全栈第九期_day027知识点总结——反射、类的内置方法

    一. 反射 ''' # isinstance class A:pass class B(A):pass a = A() print(isinstance(a,A)) # 判断对象和类的关系 print ...

  8. python基础语法18 类的内置方法(魔法方法),单例模式

    类的内置方法(魔法方法): 凡是在类内部定义,以__开头__结尾的方法,都是类的内置方法,也称之为魔法方法. 类的内置方法,会在某种条件满足下自动触发. 内置方法如下: __new__: 在__ini ...

  9. python -- 类中--内置方法

    isinstance 和  issubclass isinstance(obj,b)  检查是否obj是否是类b的对象 class A(object):pass class B(A):pass b=B ...

随机推荐

  1. Linux 安装R包

    https://www.cnblogs.com/jessepeng/p/10984983.html Linux 的R环境,可以通过anaconda jupyter notbook很容易的配置,见我之前 ...

  2. R 保存图片——tiff

    tiff(filename = "c:\\aaa.tiff", res = 800, pointsize = 2) plot(1:100) dev.off() tiff(file= ...

  3. 【CF686D】Kay and Snowflake(树的重心)

    题意:给定一棵n个点的树,q次询问,每次询问以某个点为根的子树编号是多少 n,q<=3e5 思路:设sz[u]为以u为根子树的size,v为u的size最大的儿子 若sz[v]*2<sz[ ...

  4. hihocoder1286 : 子矩阵求和

    http://hihocoder.com/problemset/problem/1286 题解 NB分析题. 首先我们令\(s[i][j]\)表示以\((i,j)\)为左上角的矩形的权值和. 因为\( ...

  5. 网络抓包wireshark2

    1.基本使用详见网络抓包wireshark,第一篇 2.中文版 2.1打开首页 2.2选择网卡 菜单栏->捕获->选项->输入(选择当前计算机网络ip对于的接口)->点击开始 ...

  6. C/C++头文件的编写

    在C语言的学习过程中,我们一般把所有的代码写在一个文件中.随着自身水平的提高,我们发现代码越写越长,代码行数越来越多,把一个工程的所有代码写在一个文件中让人看起开非常吃力.于是我们开始想把代码中的函数 ...

  7. 对象数组(JSON) 根据某个共同字段 分组

    1.在前端页面用js处理 转载https://www.cnblogs.com/rysinal/p/5834446.html 为了第二种方法对比,特意把id 转化为pid var arr = [ {&q ...

  8. What does the dot after dollar sign mean in jQuery when declaring variables?

    https://stackoverflow.com/questions/22156664/what-does-the-dot-after-dollar-sign-mean-in-jquery-when ...

  9. 查看Linux中lanmp的各软件编译参数

    转载 如何查看已经安装的nginx.apache.mysql和php的编译参数 Mysql查看mysql编译参数 Mysql5.4及之前版本查看编译安装参数,进入到mysql安装目录的bin下面 $ ...

  10. bash如何向上向下移动历史命令记录

    bash如何在 历史命令记录 中上下移动? 通过bash本身的设置,就可以做到! : 用shift+up , shift+down 来上下移动 : 单纯的up/down是调用历史命令