话本小说网 > 现代小说 > Python入门级教程
本书标签: 现代 

问答题

Python入门级教程

类变量和实例变量

答案:

是可在类的所有实例之间共享的值(也就是说,它们不是单独分配给每个实例的)。例如下例中,num_of_instance 就是类变量,用于跟踪存在着多少个Test 的实例。

**实例变量:**

实例化之后,每个实例单独拥有的变量。

class Test(object):

num_of_instance = 0

def __init__(self, name):

self.name = name

Test.num_of_instance += 1

if __name__ == '__main__':

print Test.num_of_instance # 0

t1 = Test('jack')

print Test.num_of_instance # 1

t2 = Test('lucy')

print t1.name , t1.num_of_instance # jack 2

print t2.name , t2.num_of_instance # lucy 2

Python自省

答案:

这个也是python彪悍的特性.

自省就是面向对象的语言所写的程序在运行时,所能知道对象的类型.简单一句就是运行时能够获得对象的类型.比如type(),dir(),getattr(),hasattr(),isinstance().

a = [1,2,3]

b = {'a':1,'b':2,'c':3}

c = True

print type(a),type(b),type(c) # <type 'list'=""> <type 'dict'=""> <type 'bool'="">

print isinstance(a,list) # True

</type></type></type>

字典推导式

答案:

可能你见过列表推导时,却没有见过字典推导式,在2.7中才加入的:

d = {key: value for (key, value) in iterable}

Python中单下划线和双下划线

答案:

class MyClass():

def __init__(self):

self.__superprivate = ""Hello""

self._semiprivate = "", world!""

mc = MyClass()

print mc.__superprivate

Traceback (most recent call last):

File ""<stdin>"", line 1, in <module>

AttributeError: myClass instance has no attribute '__superprivate'

>>> print mc._semiprivate

, world!

>>> print mc.__dict__

{'_MyClass__superprivate': 'Hello', '_semiprivate': ', world!'}

</module></stdin>__foo__一种约定,Python内部的名字,用来区别其他用户自定义的命名,以防冲突,就是例如__init__(),__del__(),__call__()`这些特殊方法 _foo:一种约定,用来指定变量私有.程序员用来指定私有变量的一种方式.不能用from module import * 导入,其他方面和公有一样访问; __foo:这个有真正的意义:解析器用_classname__foo`来代替这个名字,以区别和其他类相同的命名,它无法直接像公有成员一样随便访问,通过对象名._类名__xxx这样的方式可以访问.

__foo__一种约定,Python内部的名字,用来区别其他用户自定义的命名,以防冲突,就是例如__init__(),__del__(),__call__()`这些特殊方法 _foo:一种约定,用来指定变量私有.程序员用来指定私有变量的一种方式.不能用from module import * 导入,其他方面和公有一样访问; __foo:这个有真正的意义:解析器用_classname__foo`来代替这个名字,以区别和其他类相同的命名,它无法直接像公有成员一样随便访问,通过对象名._类名__xxx这样的方式可以访问.

上一章 Python的函数参数传递 Python入门级教程最新章节 下一章 问答2