zoukankan      html  css  js  c++  java
  • 《零基础入门学习Python》学习过程笔记【40类和对象的相关内置函数】

    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











  • 相关阅读:
    星战代码小电影
    CDlinux 安装
    网络正常使用,图标状态显示不正常
    查询正在执行的SQL语句DBCCINPUTBUFFER
    如何在MYSQL下所有指定数据库名下执行SQL
    GHOST完成后出现GRUB解决方法
    MySql Cast与Convert函数
    MYSQL查询数据库表索引的硬盘空间占用
    警惕企业中的五种虚假执行力
    开启笔记本win7的虚拟热点笔记本变成wifi
  • 原文地址:https://www.cnblogs.com/iamjuruo/p/7470879.html
Copyright © 2011-2022 走看看