python3中类和对象_Python3 类和对象:与类和对象相关的BIF

1、判断一个类为另一个类的子类

issubclass(class,classinfo)判断第一个参数是否为第二参数的子类

注意:1、这是不严格判断,因为一个类被认为是自身的子类

2、classinfo 可以是类对象组成的元组,只要class是其中任何一个候选的子类则返回Ture

3、在其他情况下抛出TypeError的错误

classA:def __init__(self):print('我是A类')classB(A):def __init__(self):print('我是B类继承A')classC(B):def __init__(self):print('我是C类继承B')>>>issubclass(C,A)

True>>>issubclass(C,B)

True>>>issubclass(A,A)

True>>> issubclass(A,object)#所有类的父类都是object

True>>>issubclass(A,C)

False>>>issubclass(C,(A,B))

True>>>

2、判断一个对象是否属于该类

isinstance(object,classinfo)

注意:1、如果第一个参数不是对象则永远返回False

2、如果第二个参数不是类或者由类对象组成的元组,会抛出一个TypeError的异常

classA:def __init__(self):print('我是A类')classB(A):def __init__(self):print('我是B类继承A')classC:def __init__(self):print('我是C类')

>>> a=A()

我是A类>>>isinstance(a,A)

True>>>isinstance(a,(C,A))

True>>>isinstance(B,(C,A))

False>>>isinstance(B,a)

Traceback (most recent call last):

File"", line 1, in isinstance(B,a)

TypeError: isinstance() arg2 must be a type or tuple of types

3、判断对象是否存在某种属性

hasattr(object,name)

注意:name要用单引号‘’括起来

classA:

size=10

def __init__(self):print('我是A类')>>> hasattr(A,'size')

True

4、获取对象的属性

getattr(object,name,default)

注意:当对象无该属性时如果default没赋值则会报错,如果赋值则返回default的值

classA:

size=10

def __init__(self):print('我是A类')>>> getattr(A,'lenth','不存在该属性')'不存在该属性'

5、新建对象属性和删除属性的方法

新建

1、直接对象.属性 新建属性

2.setattr(object,name,value)#name加单引号

删除

delattr(类对象,name)

对类对象的属性的删除会影响到由该类所产生的实例对象,而不能用delattr(实例对象,name)来删除属性

classA:

size=10

def __init__(self):print('我是A类')>>> a=A()

我是A类>>>a.size10

>>> a.y=1

>>>a.y1

>>>a.size10

>>>A.y

Traceback (most recent call last):

File"", line 1, in A.y

AttributeError: type object'A' has no attribute 'y'

>>> A.U=0>>>a.U

0>>> delattr(A,'U')>>>a.U

Traceback (most recent call last):

File"", line 1, in a.U

AttributeError:'A' object has no attribute 'U'

6、property

引用小甲鱼:http://bbs.fishc.com/thread-51106-1-1.html

classC:def __init__(self, size=10):

self.size=sizedefgetXSize(self):returnself.sizedefsetXSize(self, value):

self.size=valuedefdelXSize(self):delself.size

x.property(getXSize,setXSize,delXSize)>>>c.x10

>>> c.x = 12

>>>c.x12

#使用函数修饰符

classC:def __init__(self, size=10):

self.size=size

@propertydefx(self):returnself.size

@x.setterdefx(self, value):

self.size=value

@x.deleterdefx(self):del self.size

7、函数修饰符

http://bbs.fishc.com/thread-51109-1-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值