最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 一文读懂Python中的类

    正文概述    2020-07-27   290

    一文读懂Python中的类

    类(Class): 

    用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

    定义和实例化

    类的定义,使用class关键字

    class Flower(object):
        pass

    添加实例属性值

    class Flower(object):
        def __init__(self,name,color,height):
        #默认值
            self.name=name
            self.color=color
            self.height=height

    类的实例化

    class Flower(object):
        def __init__(self,name,color,height):
            self.name=name
            self.color=color
            self.height=height
    f=Flower('玫瑰','红色',20)
    print(f.name)
    print(f.color)
    print(f.height)
    输出:
    >>玫瑰
    >>红色
    >>20

    实例属性和类属性

    类没有实例属性时会调用类属性

    class Flower(object):
        height=20
        def __init__(self,name,color):
            self.name=name
            self.color=color
    f=Flower('玫瑰','红色')
    print(f.height)
    输出:
    >>20

    实例属性的优先级高于类属性

    class Flower(object):
        height=20
        def __init__(self,name,color,height):
            self.name=name
            self.color=color
            self.height=height
    f=Flower('玫瑰','红色',10)
    print(f.height)
    输出:
    >>10

    删除实例属性

    class Flower(object):
        height=20
        def __init__(self,name,color,height):
            self.name=name
            self.color=color
            self.height=height
    f=Flower('玫瑰','红色',10)
    del f.height
    print(f.height)
    输出:
    >>20#由于此时实例属性被删除,自动调用了类属性height=20

    访问限制

    私有属性

    伪私有属性_attrname:可以访问但是不要随意访问

    私有属性__attrname:一般不可以访问

    访问和修改私有属性

    访问私有属性

    class Student(object):
        def __init__(self,name,score):
            self.__name=name
            self.__score=score
    
        def get_name(self):
            return self.__name
    
        def get_score(self):
            return self.__score
    
    s=Student('Jack',88)
    #通过自定义方法来访问私有属性
    print(s.get_name())
    print(s.get_score())
    #直接访问私有属性
    print(s._Student__name)
    print(s._Student__score)
    输出:
    >>Jack
    >>88
    >>Jack
    >>88
    >>a

    修改私有属性

    class Student(object):
        def __init__(self,name,score):
            self.__name=name
            self.__score=score
    
        def get_name(self,newname):
            self.__name=newname
            return self.__name
    
        def get_score(self,newscore):
            self.__score=newscore
            return self.__score
    
    s=Student('Jack',88)
    #通过自定义方法修改私有属性
    print(s.get_name('Peter'))
    print(s.get_score('85'))
    #直接修改私有属性
    s._Student__name='Mark'
    s._Student__score='86'
    print(s._Student__name)
    print(s._Student__score)
    输出:
    >>Peter
    >>85
    >>Mark
    >>86

    继承和多态

    获取对象信息

    type()函数获取对象信息

    判断函数类型

    import types
    def fn():
        pass
    
    print(type(fn)==types.FunctionType)#判断是否是自定义函数
    print(type(abs)==types.BuiltinFunctionType)#判断是否是内置函数
    print(type(lambda x: x)==types.LambdaType)#判断是否是lambda函数
    print(type((x for x in range(10)))==types.GeneratorType)#判断是否是生成器类型
    输出:
    >>True
    >>True
    >>True
    >>True

    isinstance()函数获取对象信息

    判断类对象

    class Animal(object):
        pass
    class Dog(Animal):
        pass
    class Xiaohuang(Dog):
        pass
    a=Xiaohuang()
    b=Dog()
    c=Animal()
    print(isinstance(a,Dog))#Xiaohuang是否属于Dog类
    print(isinstance(b,Animal))#Dog是否属于Animal类
    print(isinstance(c,object))#Animal是否属于object类
    输出:
    >>True
    >>True
    >>True

    判断基本类型数据

    a=[1,2,3,4,5]
    print(isinstance(a,(list,dict)))#判断a是否属于列表或者字典类型
    输出:
    >>True

    内置方法的重写

    class myclass():
        def __len__(self):
            return 10
        def __repr__(self):
            return 'rewrite repr!'
        def __str__(self):
            return  'rewrite str!'
    
    a=myclass()
    print(len(a)
    print(repr(a))
    print(str(a))
    输出:
    >>10
    >>rewrite repr!
    >>rewrite str!

    定制属性访问

    hasattr(m,’n’) m:实例 n:类里面的属性 确定属性是否存在

    getattr(m,‘n’) m:实例 n:类里面的属性 得到指定类属性的值

    setattr(m,’n’,x) m:实例 n:类里面的属性 x:设置属性的值 有则改无则添加

    delattr(m,’n’) m:实例 n:类里面的属性 删除一个类属性

    实例属性的优先级高于类属性

    4.类的析构(销毁无用变量)

    5.继承 重写

    6.多继承 重写

    在类中

    super()可以调用父类里面的方法

    self.方法()可以调用父类里面的方法

    类中查询相关信息

    1、class 查看类名

    格式: 实例.class

    2、dict 查看全部属性,返回属性和属性值键值对形式

    格式:实例.dict

    3、doc 查看对象文档,即类中(用三个引号引起来的部分)

    格式:类名.dict

    4、bases 查看父类

    格式:类名.base

    5.mro 查看多继承的情况下,子类调用父类方法时,搜索顺序

    格式:子类名.mro 实例.class.mro

    魔术方法:

    str repr call init add

    描述符

    class Myattr():

    def get(self,instance,owner):

    print(“this is get”)

    def set(self,instance,value):

    print(“this is set”)

    def delete(self,instance):

    print(“this is delete”)

    class Myclass():

    attr=Myattr()

    a=Myclass()

    a.attr #访问属性来激活__get__方法

    a.attr=1 #赋值来激活__set__方法

    del a.attr #删除来激活 __delete__方法


    起源地下载网 » 一文读懂Python中的类

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元