您的位置:首页 > 编程语言 > Python开发

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python class