《零基础入门学习Python》学习过程笔记【40类和对象的相关内置函数】

xiaoxiao2021-02-27  218

BIF:内置函数

object是所有类的基类,所有类都默认继承object

1.如何判断一个类是否为另一个类的子类? issubclass(类名A,类名B)  如果A是B的子类,则返回True否则返回False

但这个检查是费严格性的检查

a对于这个函数一类会被认为是它本身的子类

b该函数的第二个参数可以是 很多类名组成的一个元组 例如 issubclass(类名A,(类名B,类名C,类名D))。如果类名A是他们其中一个类的子类那么会返回True,否则返回False

>>> class A: pass >>> class B(A): pass >>> issubclass(B,A) True >>> issubclass(A,A) True >>> issubclass(B,object) True >>> class C: pass >>> issubclass(B,C) False >>> issubclass(B,(A,C)) True 2.如何判断一个实例对象是否属于一个类? isinstance(对象名,类名) 或者 isinstance(对象名,(类名,类名,类名...)) 如果对象是其中一个类的实例化对象就会返回True

instance [ˈɪnstəns]   n. 实例 >>> class A: pass >>> a=A() >>> isinstance(a,A) True >>> class B: pass >>> isinstance(a,(A,B)) True 特殊情况:子类的对象不仅属于子类也属于父类

>>> class B(A): pass >>> h=B() >>> isinstance(h,B) True >>> isinstance(h,A) True

3如何判断一个对象是否有一个属性? hasattr(对象名,"属性名")

attribute [əˈtrɪbju:t]属性

>>> class C: x=0 y=0 def __init__(self,x,y): self.x=x self.y=y >>> c=C(1,2) >>> hasattr(c,'x') True >>> hasattr(c,'y') True 4.如何的到对象的属性值?getattr(对象名,'属性名') 或者 getattr(对象名,'属性名',"在找不到属性时返回的字符串内容") >>> class A: x=0 y=0 def __init__(self,x,y): self.x=x self.y=y >>> a=A(2,2) >>> getattr(a,'x') 2 >>> getattr(a,'y') 2 >>> getattr(a,'z') Traceback (most recent call last): File "<pyshell#75>", line 1, in <module> getattr(a,'z') AttributeError: 'A' object has no attribute 'z' >>> getattr(a,'z',"没有这个属性") '没有这个属性' 5.如何改变对象中指定属性的值?setsttr(对象名,'属性名',值),该对象没有这个属性时,该对象会创建该属性,并给它赋值

>>> class A: x=0 def __init__(self,x): self.x=x >>> a=A(1) >>> setattr(a,'x',2) >>> setattr(a,'y',1) >>> hasattr(a,'y') True 6.如何删除对象中指定的属性?delattr(对象名,'属性名')

感觉不太好用,删完还是能检查出存在

>>> class A: x=1 y=2 z=3 def __init__(self,x,y,z): self.x=x self.y=y self.z=z >>> a=A(1,2,3) >>> delattr(a,'x') >>> hasattr(a,'x') True

7如何通过属性设置属性?变量(不可取为与该属性同名)=property(获取属性的方法,设置属性的方法,删除属性的方法)

我什么用property()?

在一个属性有获值,设置值,删除这属性(属性值清空)这三个函数时,我们将个三个函数集成另一个属性

可以通过对象名.属性名 来获取,设置,删除原属性...这样做不用写繁杂的函数名,并且当函数更名时,属性名字不变...方便

  property [ˈprɒpəti] n. 特性

>>> class A: a=0 def __init__(self,a): self.a=a def getA(self): return self.a def setA(self,b): self.a=b def delA(self): del self.a a1=property(getA,setA,delA) >>> hh=A(1) >>> hh.a1 1 >>> hh.a1=2 >>> hh.a1 2 >>> del hh.a1 >>> hh.a1 0

转载请注明原文地址: https://www.6miu.com/read-14444.html

最新回复(0)