标签:问题 app darwin 方式 reload test 模块 文件夹 解决
# 创建类
class Foo:
# 这里我们可以创建一个类级别的变量
# 它不会随着由此类创建的变量而变化
name = ‘Jan‘
def bar(self):
print(‘Bar‘)
def hello(self, name):
print(‘you are %s‘ %self.name)
print(‘I am %s‘ %name)
print(‘\n‘)
# 根据Foo创建的对象
obj1 = Foo()
obj2 = Foo()
obj1.hello(‘August‘)
obj2.hello(‘July‘)
输出结果:
you are Jan
I am August
you are Jan
I am July
由于Python是动态语言,根据类创建的实例可以任意绑定属性。
给实例绑定属性的方法是通过实例变量,或者通过self变量:
2.1 实例属性
class Student(object):
def __init__(self, name):
self.name = name
s = Student(‘Bob‘)
s.score = 90
score是实例属性
实例属性优先级高于类属性
# -*-coding:utf-8 —*—
class Student(object):
name = ‘Student‘
s = Student() # 创建实例s
print(s.name) # 打印name属性,因为实例并没有name属性,所以会继续查找class的name>属性
s.name = ‘Michael‘ # 给实例绑定name属性
print(s.name) # 由于实例属性优先级比类属性高,因此,它会屏蔽掉类的name属性
print(Student.name)
输出结果为:
Student
Michael
Student
模块:在python中一个文件可以被看成1个独立模块,模块把python代码分成一些有组织的代码段,通过导入的方式实现代码重用。
包:对应着文件夹,包必须至少含有一个__int__.py文件按,该文件的内容可以为空。int.py用于标识当前文件夹是一个包。
app/
__init__.py
a/
__init__.py
a.py
b/
__init__.py
b.py
app是最顶层的包,a和b是它的子包,可以这样导入:
from app.a import a
from app.b.b import test
a.test()
test()
reload() 函数语法:
reload(module)
开启一个交互对话,创建一个如下文件script.py:
#-*-coding:utf-8 -*-
import sys
print sys.platform
print 2**100
x=‘spam‘
print x*8
在命令行中运行,结果如下:
>>> import scripy
darwin
1267650600228229401496703205376
spamspamspamspamspamspamspamspam
>>> import scripy
>>>
也即每次交互,只有第一次导入有效,因为,默认情况下,只有在每次会话的第一次运行,第一次导入之后,其他的导入都不会再工作,甚至对模块内容的修改也仍然不会工作。只有推出交互后重新建立一次交互再导入才可以(这多麻烦呀)
因为导入是开销很大的操作,
为解决导入问题,要在同一次会话中多次运行文件,需引入reload()
>>> import scripy
darwin
1267650600228229401496703205376
spamspamspamspamspamspamspamspam
>>> reload(scripy)
darwin
1267650600228229401496703205376
spamspamspamspamspamspamspamspam
<module ‘scripy‘ from ‘scripy.pyc‘>
>>>
标签:问题 app darwin 方式 reload test 模块 文件夹 解决
原文地址:https://www.cnblogs.com/monkey-moon/p/9385823.html