在Python中,可以通过class关键字定义自己的类,然后通过自定义的类对象类创建实例对象。
例如,下面创建了一个Student的类,并且实现了这个类的初始化函数”__init__”:
| 1234567 | class Student(object): count = 0 books = [] def __init__(self, name, age): self.name = name self.age = age pass |
接下来就通过上面的Student类来看看Python中类的相关内容。
在上面的Student类中,”count””books””name”和”age”都被称为类的数据属性,但是它们又分为类数据属性和实例数据属性。
类数据属性和实例数据属性
首先看一段代码,代码中分别展示了对类数据属性和实例数据属性的访问:
| 12345678910111213141516171819202122232425262728 | Student.books.extend([\”python\”, \”javascript\”]) print \”Student book list: %s\” %Student.books # class can add class attribute after class definationStudent.hobbies = [\”reading\”, \”jogging\”, \”swimming\”]print \”Student hobby list: %s\” %Student.hobbies print dir(Student) print wilber = Student(\”Wilber\”, 28) print \”%s is %d years old\” %(wilber.name, wilber.age) # class instance can add new attribute # \”gender\” is the instance attribute only belongs to wilberwilber.gender = \”male\”print \”%s is %s\” %(wilber.name, wilber.gender) # class instance can access class attributeprint dir(wilber)wilber.books.append(\”C#\”)print wilber.books print will = Student(\”Will\”, 27) print \”%s is %d years old\” %(will.name, will.age) # will shares the same class attribute with wilber# will don\’t have the \”gender\” attribute that belongs to wilberprint dir(will) print will.books |
通过内建函数dir(),或者访问类的字典属性__dict__,这两种方式都可以查看类有哪些属性,代码的输出为:

对于类数据属性和实例数据属性,可以总结为:
特殊的类属性
对于所有的类,都有一组特殊的属性:
| 类属性 | 含义 |
| __name__ | 类的名字(字符串) |
| __doc__ | 类的文档字符串 |
| __bases__ | 类的所有父类组成的元组 |
| __dict__ | 类的属性组成的字典 |
| __module__ | 类所属的模块 |
| __class__ | 类对象的类型 |
通过这些属性,可以得到 Student类的一些信息:
| 1234567891011121314151617 | class Student(object): \’\’\’ this is a Student class \’\’\’ count = 0 books = [] def __init__(self, name, age): self.name = name self.age = age pass print Student.__name__print Student.__doc__print Student.__bases__print Student.__dict__print Student.__module__print Student.__class |
代码输出为:

属性隐藏
从上面的介绍了解到,类数据属性属于类本身,被所有该类的实例共享;并且,通过实例可以去访问/修改类属性。但是,在通过实例中访问类属性的时候一定要谨慎,因为可能出现属性”隐藏”的情况。
继续使用上面的Student类,来看看属性隐藏:
1234567tax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate\” data-settings=\” minimize scroll-always\” style=\” margin-top: 12px; margin-bottom: 12px; font-size: 13px !important; line-height: 15px !important;\”>
接下来就通过上面的Student类来看看Python中类的相关内容。
数据属性在上面的Student类中,”count””books””name”和”age”都被称为类的数据属性,但是它们又分为类数据属性和实例数据属性。 类数据属性和实例数据属性 首先看一段代码,代码中分别展示了对类数据属性和实例数据属性的访问:
通过内建函数dir(),或者访问类的字典属性__dict__,这两种方式都可以查看类有哪些属性,代码的输出为:
对于类数据属性和实例数据属性,可以总结为:
特殊的类属性 对于所有的类,都有一组特殊的属性:
通过这些属性,可以得到 Student类的一些信息:
代码输出为:
属性隐藏 从上面的介绍了解到,类数据属性属于类本身,被所有该类的实例共享;并且,通过实例可以去访问/修改类属性。但是,在通过实例中访问类属性的时候一定要谨慎,因为可能出现属性”隐藏”的情况。 继续使用上面的Student类,来看看属性隐藏:
|
上一篇:Python 中的类(上)