实例1:
- #-*-coding:UTF-8-*-
- class FirstDemo(object):
- """
- 这里是一个doc
- """
- a=10 #类属性
- def demo(self):
- """
- 第一个方法
- """
- pass
- def demo2(self):
- """
- 第二个方法
- """
- pass
- print FirstDemo.__dict__ #打印出FirstDemo类的所有属性和方法,结果为一个字典
- print FirstDemo.__bases__ #类的基类
- print FirstDemo.__doc__ #类的docstring
- print FirstDemo.__name__ #类的名字
- print FirstDemo.__module__ #类所在模块,如果是主文件,就是__main__
- print FirstDemo().__class__ #类的类型<class '__main__.FirstDemo'>
- print FirstDemo().__module__ #实例类型所在模块
- print FirstDemo().__dict__ #对象的字典,存储所有实例成员信息
实例2:
- #-*-coding:UTF-8-*-
- class FirstDemo(object):
- b=100 #类属性
- def __init__(self):
- FirstDemo.b=200
- def __repr__(self):
- return "repr方法"
- def __str__(self):
- return "str方法"
- def demo(self):
- print FirstDemo.b
- a=FirstDemo()
- print a.__repr__()
- print a.__str__()
- print "--------"
- a.demo()
结果:
repr方法
str方法
--------
200
序号 | 目的 | 所编写代码 | Python 实际调用 |
---|---|---|---|
① | 初始化一个实例 | x = MyClass() |
x.__init__() |
② | 字符串的“官方”表现形式 | repr(x) |
x.__repr__() |
③ | 字符串的“非正式”值 | str(x) |
x.__str__() |
|
|||
|
|
最后打印的b的值为200,是因为__init__()方法的调用发生在实例被创建之后。
实例3(对象属性的操作):
- #-*-coding:UTF-8-*-
- class FirstDemo(object):
- b=100 #类属性
- def __init__(self):
- FirstDemo.b=200
- def __repr__(self):
- return "repr方法"
- def __str__(self):
- return "str方法"
- def demo(self):
- print FirstDemo.b
- a=FirstDemo()
- a.temp=500 #为对象添加一个属性
- print a.__dict__ #查看对象的实例属性字典
- print dir(a) #列出实例的属性和方法集合
- del a.temp #删除对象中的temp属性
- print a.__dict__
- print dir(a)