• 5 python 内置类


     1、实例属性和类属性

    实例绑定属性的方法是通过实例变量,或者通过self变量:

    class Chinese:
        def __init__(self,name,sex,age):
            self.name = name
            self.sex = sex
            self.age = age
    
    s1 = Chinese('alex','man','22')
    s2 = Chinese('alex2','woman','23')
    s3 = Chinese('alex3','man','21')

    类属性:

    class Chinese:
        country = 'china'
        def __init__(self,name,sex,age):
            self.name = name
            self.sex = sex
            self.age = age
     country = 'china'就是类Chinese的属性
    class Chinese:
        name = 'china'
        country = 'china2'
        def __init__(self,name,sex,age):
            self.name = name
            self.sex = sex
            self.age = age
    
    s1 = Chinese('alex','man','22')
    s2 = Chinese('alex2','woman','23')
    s3 = Chinese('alex3','man','21')
    print(s1,s1.__dict__)
    
    print(s1.name)# 显示的是alex,不会显示类属性china
    print(s1.country)

    从上面的例子可以看出,在编写程序的时候,千万不要对实例属性和类属性使用相同的名字,因为相同名称的实例属性将屏蔽掉类属性,但是当你删除实例属性后,再使用相同的名称,访问到的将是类属性。

    实例属性属于各个实例所有,互不干扰;

    类属性属于类所有,所有实例共享一个属性;

    不要对实例属性和类属性使用相同的名字,否则将产生难以发现的错误。

    实例属性属于各个实例所有,互不干扰;
    
    类属性属于类所有,所有实例共享一个属性;
    
    不要对实例属性和类属性使用相同的名字,否则将产生难以发现的错误。

    2、  __dict__ : 类的属性(包含一个字典,由类的数据属性组成)

    1) 内置的数据类型没有__dict__属性 / int,list dict没有
    
    2) 每个类有自己的__dict__属性,就算存着继承关系,父类的__dict__ 并不会影响子类的__dict__

    类的静态函数,类函数、普通函数,全局变量以及一些内置的属性都放在类_dict_里的
    3) 对象也有自己的__dict__属性, 存储self.xxx 信息,父子类对象公用__dict__/ 一个字典,对象的数据属性组成

     3、  __bases__ : 类的所有父类构成元素(由所有父类组成的元组), _bases_查看所有继承的父类,

    class ParentClass1:
        pass
    class ParentClass2:
        pass
    class SubClass1(ParentClass1):#单继承,基类是ParentClass1,派生类是SubClass1
        pass
    class SubClass2(ParentClass1,ParentClass2):#python 支持多继承,用逗号分隔开多个继承类
        pass
    print(SubClass1.__bases__)
    print(SubClass2.__bases__)

    结果元组表示:

    (<class '__main__.ParentClass1'>,)
    (<class '__main__.ParentClass1'>, <class '__main__.ParentClass2'>)

     


        __doc__ :类的文档字符串

        __name__: 类名

        __module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)

      

  • 相关阅读:
    封装图片处理类(缩略图)
    封装表单验证类
    魔术方法
    封装自己的smartyBC类
    快捷键
    unicode
    基本数据类型课上练习
    数制总结
    12.29.作业
    12.28作业
  • 原文地址:https://www.cnblogs.com/foremostxl/p/9588729.html
Copyright © 2020-2023  润新知