當前位置:首頁 » 編程語言 » python靜態

python靜態

發布時間: 2022-01-26 01:15:48

A. python怎麼實現靜態變數

單純的靜態變數,不就是常量么。

python中,沒有static,定義常量的話。

PI=3.14

使用大寫字母,表示常量,以示與變數的區別。

B. python頁面靜態化可以用什麼方法有哪些

主要特點就是需要綁定到一個對象上,python解析器會自動把實例自身傳遞給方法,如14行所示,而直接使用InstanceMethod.f1()調用方法是不行的。

class InstanceMethod(object):
def __init__(self, a):
self.a = a
def f1(self):
print 'This is {0}.'.format(self)
def f2(self, a):
print 'Value:{0}'.format(a)
if __name__ == '__main__':
# im = InstanceMethod()
im = InstanceMethod('233')
im.f1()
# im.f2()
im.f2(233)

C. python的靜態方法有什麼用

ython的靜態方法和類成員方法都可以被類或實例訪問,兩者概念不容易理清,但還是有區別的:
1)靜態方法無需傳入self參數,類成員方法需傳入代表本類的cls參數;
2)從第1條,靜態方法是無法訪問實例變數的,而類成員方法也同樣無法訪問實例變數,但可以訪問類變數;
3)靜態方法有點像函數工具庫的作用,而類成員方法則更接近類似Java面向對象概念中的靜態方法。

D. python靜態方法和類方法的區別

面相對象程序設計中,類方法和靜態方法是經常用到的兩個術語。

邏輯上講:類方法是只能由類名調用;靜態方法可以由類名或對象名進行調用。

在C++中,靜態方法與類方法邏輯上是等價的,只有一個概念,不會混淆。

而在Python中,方法分為三類實例方法、類方法、靜態方法。代碼如下:

class Test(object):

def InstanceFun(self):
print("InstanceFun");
print(self);

@classmethod
def ClassFun(cls):
print("ClassFun");
print(cls);

@staticmethod
def StaticFun():
print("StaticFun");

t = Test();
t.InstanceFun();# 輸出InstanceFun,列印對象內存地址「<__main__.Test object at 0x0293DCF0>」
Test.ClassFun(); # 輸出ClassFun,列印類位置 <class '__main__.Test'>
Test.StaticFun(); # 輸出StaticFun
t.StaticFun(); # 輸出StaticFun
t.ClassFun(); # 輸出ClassFun,列印類位置 <class '__main__.Test'>
Test.InstanceFun(); # 錯誤,TypeError: unbound method instanceFun() must be called with Test instance as first argument

Test.InstanceFun(t); # 輸出InstanceFun,列印對象內存地址「<__main__.Test object at 0x0293DCF0>」
t.ClassFun(Test); # 錯誤 classFun() takes exactly 1 argument (2 given)

可以看到,在PYTHON中,兩種方法的主要區別在於參數。實例方法隱含的參數為類實例self,而類方法隱含的參數為類本身cls。
靜態方法無隱含參數,主要為了類實例也可以直接調用靜態方法。

所以邏輯上類方法應當只被類調用,實例方法實例調用,靜態方法兩者都能調用。主要區別在於參數傳遞上的區別,實例方法悄悄傳遞的是self引用作為參數,而類方法悄悄傳遞的是cls引用作為參數。

Python實現了一定的靈活性使得類方法和靜態方法,都能夠被實例和類二者調用

E. 如何在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]」。

F. lt;譯文>Python中靜態方法和類方法的區別是什麼

問題:What
is
the
difference
between
a
static
method
and
class
method
in
Python?
Python中靜態方法和類方法的區別是什麼?
問題原文:
Python
has
two
decorators
@staticmethod
and
@classmethod.
Could
someone
one
explain
the
difference
between
the
two
or
point
me
to
a
source
where
it
is
documented?
When
should
the
staticmethod
decorator
be
used
over
the
classmethod
decorator?
問題譯文:
Python有兩種裝飾器靜態方法裝飾器@staticmethod
和類方法裝飾器@classmethod。誰能解釋一下兩者的區別或者給我指點點文檔資料?什麼時候該用靜態方法裝飾器或者類方法裝飾器?
Answers:
1.Maybe
a
bit
of
example
code
will
help:
Notice
the
difference
in
the
call
signatures
of
foo,
class_foo
and
static_foo:
可能一點例子代碼會有幫助:注意調用函數foo、class_foo、static_foo的寫法上的區別
class
A
(
object
):
def
foo
(
self
,
x
):
print
"executing
foo(%s,%s)"
%(
self
,
x
)
@classmethod
def
class_foo
(
cls
,
x
):
print
"executing
class_foo(%s,%s)"
%(
cls
,
x
)
@staticmethod
def
static_foo
(
x
):
print
"executing
static_foo(%s)"
%
x

G. python 類方法和靜態方法的區別

類方法的第一個parameter是類自己,然後才是參數。而靜態方法是和類無關的,也不會自動導入類作為參數。可以說靜態方法只是一個和自己所在的類無關的一個方法。可以隨意你怎麼用這個方法。抽象點說靜態方法就是你在其他語言裡面用的普通方法,類方法是Java里的類方法一樣的。

H. 求助Python高手,Python里有靜態方法和私有方法,這兩者有什麼區別呢

靜態方法不能訪問實例的屬性,私有訪問只能在類的內部訪問,不能被實例訪問,詳細看代碼:

classPerson:
age=0
wegiht=0
__sex=''
def__init__(self):
pass
@staticmethod
defget_stactic_age():
Person.age+=1#這里不能用self.age訪問
def__add(self):
print("這是一個私有方法,只能在類中使用")
defget_weight(self):
print("這是一個公有方法,可以被類的實例使用")
tom=Person()
tom.get_weight()#這個可以正常訪問
tom.__add()#這個不能正常訪問,報AttributeError:'Person'objecthasnoattribute'__add'異常

I. python 裡面有靜態函數嗎

python的類里用@staticmethod的是靜態方法,@classmethod的是類方法,如下

classPerson(object):

person_list=[]

def__init__(self,name,age):
self.name=name
self.age=age
self.person_list.append(self)

@classmethod
defone_year_later(cls):
forpincls.person_list:
p.age+=1

@staticmethod
defborn_one_boby(name):
returnPerson(name,0)

def__repr__(self):
return'<Personname:%s,age:%s>'%(self.name,self.age)

if__name__=='__main__':
petter=Person('Petter',23)
merry=Person('Merry',21)
print(petter)#<Personname:Petter,age:23>
print(merry)#<Personname:Merry,age:21>
Person.one_year_later()
print(petter)#<Personname:Petter,age:24>
print(merry)#<Personname:Merry,age:22>
baby=merry.born_one_boby('Tom')
print(Person.person_list)#[<Personname:Petter,age:24>,<Personname:Merry,age:22>,<Personname:Tom,age:0>]
熱點內容
dhcp伺服器如何更新ip地址 發布:2024-11-15 23:18:40 瀏覽:125
ai清除緩存 發布:2024-11-15 23:12:38 瀏覽:602
電腦版我的世界如何退出伺服器 發布:2024-11-15 23:00:39 瀏覽:312
哪裡有存儲器零售商 發布:2024-11-15 22:55:42 瀏覽:46
手機如何設置鎖屏密碼個性 發布:2024-11-15 22:44:08 瀏覽:417
mysql導入存儲過程 發布:2024-11-15 22:43:18 瀏覽:638
net連接資料庫代碼 發布:2024-11-15 22:40:16 瀏覽:61
編程計算nk 發布:2024-11-15 22:35:07 瀏覽:833
資料庫第一章 發布:2024-11-15 22:27:07 瀏覽:593
測試php性能工具 發布:2024-11-15 22:19:37 瀏覽:580