python-类属性及方法
2016-10-22 20:35
323 查看
属性
__dict__
维护类或实例中所有的成员。class SubStrClass(str): a = 1 def __init__(self): self.b = 2 def myprint(self): pass print SubStrClass.__dict__ print SubStrClass().__dict__
结果:
{'a': 1, '__module__': '__main__', 'myprint': <function myprint at 0x0000000002A37208>, '__dict__': <attribute '__dict__' of 'SubStrClass' objects>, '__doc__': None, '__init__': <function __init__ at 0x0000000002A372E8>} {'b': 2}
注意类与实例调用这一属性输出的区别。
但并非所有的实例都会有这一属性,比如在类中添加了一个__slots__的属性。
__slots__
定义了__slots__属性之后,该类的实例只能拥有__slots__属性,就不会存在__dict__了。作用:
阻止在实例化时,该类能动态添加的属性,没有定义时,该属性不存在。
class SubStrClass(object): __slots__ = ('a','b','c') a = 1 def __init__(self): self.b = 2 self.d = 4 #此处会报错,因为__slots__属性中没有d,在实例中不能包含该属性 def myprint(self): pass print SubStrClass.__slots__ print SubStrClass().__slots__ ins = SubStrClass() ins.b = 1 ins.d = 2 #此处会报错,因为__slots__属性中没有d,在实例中不能添加该属性
结果:
('a', 'b', 'c') ('a', 'b', 'c')
方法
__new__
__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值。__new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。
__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数。
__new__(cls, *args, **kwargs)
相关文章推荐
- [Dynamic Language] Python 静态方法、类方法、属性
- python面向对象-属性和方法
- python学习笔记之七:魔法方法,属性
- python 魔法方法,属性,迭代
- python 魔法方法,属性,迭代
- Python类属性和类方法的一些差别(与C++和Java相比)
- Python实现动态添加类的属性或成员函数的解决方法
- python 方法属性(用户自定义方法,非内置方法)
- python 对象,属性的方法
- Python基础编程(九)魔法方法、属性和迭代器
- python特殊属性和方法的运用
- python创建只读属性对象的方法(ReadOnlyObject)
- python特殊属性和方法的运
- python保留属性和方法总结(转载)
- Python属性和方法
- python特殊属性和方法的运用
- chapter9: python 类的方法,属性,迭代器(new[old]-type class,[un]bound method,super,protocol,property,iterators)
- 8、Python-方法、属性、迭代器
- Python属性和方法
- python基础教程_学习笔记11:魔法方法、属性和迭代器