特殊属性
属性 | 含义 |
---|---|
name | 类,函数,方法等的名字 |
modeule | 类定义所在的模块名 |
class | 对象或类所属的类 |
bases | 类的基类的元组,顺序为它们在基类列表中出现的顺序 |
doc | 类函数的文档字符串,如果没有定义则为None |
mro | 类的mro,class.mro()返回结果保存在__mro__中 |
dict | 类或实例的属性,可写的字典 |
查看属性
dir|返回类或者对象的所有成员名称列表dir()函数炒作实例就是调用__dir__().是用实力调用时,如果提供__dir__(),则返回其返回字,要求是可迭代对象.如果没有__dir__().这回从实例和列及祖先类中收集信息
如果dir([obj])参数obj包含方法__dir__(),该方法将被调用.如果参数obj不包含__dir__(),该方法将最大限度地手机属性信息.
dir(obj)对于不同类型的对象obj具有不同的行为:
- 如果对象是模块对象,返回的列表包含模块的属性名和变量名.
- 如果对象是类型或者类对象,返回的列表包含类的属性名,及它的基类的属性名.
- 如果obj不写,返回列表包含内容不同
- 在模块中,返回模块的列表包含模块的属性名和变量名.
- 在函数中,返回本地作用域的变量名
- 在方法中,返回本地作用域的变量名
# animal.py
class Animal:
x = 123
def __init__(self, name):
self.name = name
self.__age = 10
self.weight = 20
print(' Animal Module\'s names = {}'.format(dir()))
#Cat.py
import animal
from animal import Animal
class Cat(Animal):
x = 'cat'
y = 'abcd'
class Dog(Animal):
def __dir__(self):
return ['dog'] #必须返回可迭代对象
print('---------------')
print('Current MOdule\'s name = {}'.format(dir()))
print('animal Module\'s names = {}'.format(dir(animal)))
print("object's __dict__ = {}".format(dir(sorted(object.__dict__.keys()))))
print("Animal's dir() = {}".format(dir(Animal)))
print("Cat's dir() = {}".format(dir(Cat)))
print("--------------------")
tom = Cat('tom')
print(sorted(dir(tom)))
print(sorted(tom.__dir__()))
print("Dog's dir = {}".format(dir(Dog)))
dog = Dog('snoppy')
print(dir(dog))
print(dog.__dict__)
运行结果:
Animal Module's names = ['Animal', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
---------------
Current MOdule's name = ['Animal', 'Cat', 'Dog', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'animal']
animal Module's names = ['Animal', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
object's __dict__ = ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
Animal's dir() = ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'x']
Cat's dir() = ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'x', 'y']
--------------------
['_Animal__age', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__&