① python 类方法,静态方法,普通方法比较2019-03-22
1.类方法用@classmethod:
用途:一般用来对类属性进行限制性操作
用法:该方法的调用者(不管是类调用还是实例调用),会默认把该类作为第一个参数传进来(调用者不必显示指定),这样该方法内部可以获取到该类,从而对类属性进行操作。实际用途可以用来限制对类属性的访问,不管是类调用还是实例调用,能保证修改的都是类属性。
2.静态方法用@staticmethod:
用途:用来实现工具性方法
用法:如果方法内部没有涉及到对实例属性的操作,可以把该方法定义为静态方法,不管是类调用还是实例调用,都能直接调用该方法实现相应功能。
3.普通方法:
用途:实例调用的方法
用法:方法内部涉及到对实例属性的操作,实例调用该方法时会自动默认将实例的引用作为第一个参数传进去。也可以用类直接访问,不过这样访问时需要手动传入第一个参数,也就是一个实例的引用。
附加: @property的使用(从语义规范上来说,只用于普通方法,也就是对实例变量进行控制,但也可以强行用来对类变量进行控制)
对私有变量的控制访问可以借鉴java的get、set方式。这没有任何问题。唯一的问题就是不直观,把对变量的访问变成了对方法的访问。而@property的作用就是还原这种直观的访问方式,可以像访问变量一样访问@property修饰的方法。注意:如果不想让别人修改某变量,可以用不写@XXX.setter方法来实现。
总结:不管方法是哪一种方法(类方法,静态方法,还是普通的实例方法),都可以用类直接访问和用实例进行访问,只是参数多传一个多传一个的问题。更重要的是语义的规范,语法上没什么问题。
② eclipse怎么将自己新建的python模板设为默认,而不是<Empty>
又是你,哥子
不是很明白你的意思,设为默认?
所谓的<Empty>只是你新建时所设置的名字而已,你也可以学eclipse内建的一些模板啊,比如
Mole: My_Insert
然后,你每次new一个mole时,就选这个不就得了
③ 如何在Python中定义静态变量
Python使用函数默认值实现函数静态变量的方法,具体方法如下:
一、Python函数默认值
Python函数默认值的使用可以在函数调用时写代码提供方便,很多时候我们只要使用默认值就可以了。 所以函数默认值在python中用到的很多,尤其是在类中间,类的初始化函数中一帮都会用到默认值。 使用类时能够方便的创建类,而不需要传递一堆参数。
只要在函数参数名后面加上 ”=defalut_value”,函数默认值就定义好了。有一个地方需要注意的是,有默认值的参数必须在函数参数列表的最后,不允许将没有默认值的参数放在有默认值的参数后,因为如果你那样定义的话,解释器将不知道如何去传递参数。
先来看一段示例代码:
def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
while True:
ok = raw_input(prompt)
if ok in ('y', 'ye', 'yes'): return True
if ok in ('n', 'no', 'nop', 'nope'): return False
retries = retries - 1
if retries < 0: raise IOError, 'refusenik user'
print complaint
你调用上面的函数时,可以修改重试次数和输出的提示语言,如果你比较懒得话,那么什么都不用改。
二、python使用函数默认值来实现函数静态变量的功能
Python中是不支持静态变量的,但是我们可以通过函数的默认值来实现静态变量的功能。
当函数的默认值是内容是可变的类时,类的内容可变,而类的名字没变。(相当于开辟的内存区域没有变,而其中内容可以变化)。
这是因为python中函数的默认值只会被执行一次,(和静态变量一样,静态变量初始化也是被执行一次。)这就是他们的共同点。
再来看下面的程序片段:
def f(a, L=[]):
L.append(a)
return L
print f(1)
print f(2)
print f(3)
print f(4,['x'])
print f(5)
其输出结果是:
[1]
[1, 2]
[1, 2, 3]
['x', 4]
[1, 2, 3, 5]
前面的好理解,为什么最后 “print f(5)”的输出是 “[1, 2, 3, 5]”呢?
这是因为 “print f(4,['x'])”时,默认变量并没有被改变,因为默认变量的初始化只是被执行了一次(第一次使用默认值调用),初始化执行开辟的内存区(我们可以称之为默认变量)没有被改变,所以最后的输出结果是“[1, 2, 3, 5]”。
④ Python怎么实现静态变量
python静态变量实现方法:
class CTest(object):
__init=None
def __new__(cls,value):
if cls.__init is None:
cls.__init=object.__new__(cls)
cls.__init.value=value
return cls.__init
测试代码:
a=CTest(5)
b=CTest(6)
print a.value
print b.value
输出结果:
5
5
⑤ 怎样在python中使用c++的静态库
如何让python调用C和C++代码 安装python后,会有一个chm格式的python手册。要搞明白如何让python调用C/C++代码(也就是写python的 extension),你需要征服手册中的 厚厚的一章。在昨天花了一个小时看地头晕脑胀,仍然不知道如何写python的extensi...
⑥ python 为什么要使用静态方法
Python使用静态方法类似函数工具使用,一般尽量少用静态方法。
Python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的:
1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数;
2)从第1条,静态方法是无法访问实例变量的,而类成员方法也同样无法访问实例变量,但可以访问类变量;
3)静态方法有点像函数工具库的作用,而类成员方法则更接近类似Java面向对象概念中的静态方法。
⑦ django 改了静态文件但是页面没有变
django处理静态文件
静态文件指的是js css 还有图片这些,配置方法如下
1. 在设置文件(settings.py)中,installed_apps中添加 django.contrib.staticfiles
然后设置static_url
STATIC_URL = '/static/'
2. 在模板中的使用方式如下
{% load staticfiles %}
<img src="{% static "my_app/myexample.jpg" %}" alt="My image"/>
这种方式提供的是一种相对路径,当你将环境切换到CDN的时候会方便很多
当然也可以用简单一些的方法---直接提供一个静态文件的url,不过在CDN中就要修改才可以使用了
/static/my_app/myexample.jpg
3. 把你的文件都放在一个文件夹下,比如
my_app/static/my_app/myimage.jpg
注:当debug设置True的时候上面的方法可以,但是False的时候会提示not found的错误
当debug设置为Fales的时候,设置方法如下(增加静态文件url,使用 django.contrib.staticfiles.views.serve()来寻找静态文件):
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
注:也不推荐实际环境中用
当你有多个静态文件目录的时候可以使用下面的方式,设置STATICFILES_DIRS:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
'/var/www/static/',
]
注:django寻找静态文件默认找到地一个就会返回,不再进行后续查找,所以要注意安排顺序及目录
部署的步骤:
1. 设置STATIC_ROOT:
STATIC_ROOT = "/var/www/example.com/static/"
2. 执行collectstatic命令:
$ python manage.py collectstatic
这会把静态文件拷贝到你设置的static_root目录下(这样可以更方便的和nignx集成,权限管理也更方便)
⑧ Python打开网页并另存为静态html怎么实现
用Python的requests库解决这个问题比较简单,例程如下:
importsys
importrequests
reload(sys)
sys.setdefaultencoding('utf-8')
r=requests.get('xxx网址')
fh=open('test.html','w')
fh.write(r.text)
fh.close()
说明一下,requests库不是Python内置的,不过很流行,很多发行版都带,没带的话就去requests官网去下载,或者用 pip install requests命令安装最新版。
这个程序里在保存文件前,还需要把字符编码设置一下,用的是自带的sys库。
⑨ python怎样返回静态html文件,不需要渲染
from flask import Flask,send_file
app = Flask(__name__)@app.route('/')def index():
return send_file("index.html")if __name__ == '__main__':
app.run()
这样可以返回 html 的内容,但是奇怪的是 css,js 和图片资源无法加载,而且静态资源路径肯定没有放错
index.html里的静态资源的地址不能简单地写成在文件系统中相对于index.html的相对地址,而要根据flask的设置写,
或者直接写成"exmaple.com/static/xxx.css"的绝对url
⑩ python——Django项目开发:配置项目/static/路径,调用css、img、js等静态文件
在Django项目开发中,不能像正常web开发一样通过 'imgs/bg.jpg' 访问本地静态文件,需要做一些配置,才能实现静态文件的访问。
一、首先在项目根路径下新建一个static文件夹,然后在static文件夹下可以新建相应的css、imgs、js等文件夹,用于存放css、img、js等静态文件。
二、项目配置
1、打开settings.py,在底部添加:
2、打开urls.py,在 urlpatterns 中添加:(注意,如果你在blog目录下也建立了urls.py,那么就得在blog/urls.py中做修改。别忘了import settings):
(不过我经过实测,不加这一个,也可以完成静态文件的访问)
3、在html模板最上面添加:
然后在需要的地方按照这个格式进行调用,如:
最后重新运行项目,img等本地静态文件就可以被django找到了,这时模板对应的页面就可以显示使用img等文件了。