請問可以在python的類的方法裡面引用類外面定義的function嗎?應該怎樣引用

2021-03-21 15:56:07 字數 5909 閱讀 5061

1樓:__盜亦有道

如果你這個方法是類需要用的,當然要寫入類裡面了,

但是如果你這個方法只是你建立的個別例項要用的話,那就可以補在例項裡。

或者你還可以跟主程式寫在一起,不過這樣子就只限於你這個例項區域性能用了。

2樓:

類外面的叫函式(function)不叫方法(method),你都管他叫方法了那就是在類裡面的。

3樓:匿名使用者

不用的,python的方法和類的關係和c++的比較接近

python中可以直接用類呼叫方法嗎

4樓:

這裡先肯定的回答一下:可以

python裡方法在類中是作為類的屬性的,在解釋之前,這邊先給個例子

>>>class pizza(object):

...    radius = 42

...    def __init__(self, size=10):

...        self.size = size

...    def get_size(self):

...        return self.size

...    @staticmethod

...    def mix_ingredients(x, y):

...        return x + y

...    def cook(self):

...        return self.mix_ingredients(self.cheese, self.vegetables)

...    @clas**ethod

...    def get_radius(cls):

...        return cls.radius

>>> pizza.get_size

>>> pizza.get_size()

traceback (most recent call last):

file "", line 1, in

typeerror: unbound method get_size() must be called with pizza instance as first argument (got nothing instead)

>>> pizza.get_size(pizza(42))

42>>> pizza(42).get_size

>>>> pizza(42).get_size()

42>>> m = pizza(42).get_size

>>> m()

42>>> m = pizza(42).get_size

>>> m.__self__

<__main__.pizza object at 0x7f3138827910>

>>> m == m.__self__.get_size

true

>>> pizza().cook is pizza().cook

false

>>> pizza().mix_ingredients is pizza.mix_ingredients

true

>>> pizza().mix_ingredients is pizza().mix_ingredients

true

>>> pizza.get_radius

>>>> pizza().get_radius

>>>> pizza.get_radius is pizza().get_radius

true

>>> pizza.get_radius()

42在上面的例子中可以看出python中類有三種方法,分別是類方法,靜態方法,例項方法。而能讓類只接呼叫的只有類方法,或通過一些小技巧,類也可以呼叫例項方法如上面例子中的呼叫

>>> pizza.get_size(pizza(42))

42這邊順便說明下這三中方法的區別

1類方法的特點是類方法不屬於任何該類的物件,只屬於類本身

2類的靜態方法類似於全域性函式,因為靜態方法既沒有例項方法的self引數也沒有類方法的cls引數,誰都可以呼叫

3.例項方法只屬於例項,是例項化的物件才能呼叫

5樓:小熙

1、如果你需要用例項來呼叫你的方法,那麼在定義方法的時候,一定要把第一個引數設定成為self;

2、如果你需要使用靜態方法,那麼你需要在方法前面加上@staticmethod修飾符;

3、如果要使用類方法,那麼你需要在方法前面加上@clas**ethod修飾符,並且在方法中至少使用一個引數,第一個引數在方法中的作用就是代表改類本身。

6樓:匿名使用者

不可以類是一個描述性的東西 不是一個具象的東西 它不能做任何事情 包括呼叫方法

類的例項才是一個具有行為能力的東西 因此只有例項化之後才能呼叫方法

python如何呼叫自定義類中的函式?

7樓:椴

定義一個函式只給了函式一個名稱,指定了函式裡包含的引數,和**塊結構。這個函式的基本結構完成以後,你可以通過另一個函式呼叫執行,也可以直接從python提示符執行。

如下例項呼叫了printme()函式:

複製** **如下:#!/usr/bin/python# function definition is heredef printme( str ):

"列印任何傳入的字串"

print str;

return;

# now you can call printme function

printme("我要呼叫使用者自定義函式!");

printme("再次呼叫同一函式");

#以上例項輸出結果:

#我要呼叫使用者自定義函式!

#再次呼叫同一函式

8樓:匿名使用者

你好:你要在自定義的函式裡面的第一個引數設定為:

self

這是python約定的;

呼叫的時候可以不用管它,它相當於this!

python中類內部的函式可以互相呼叫嗎?

9樓:匿名使用者

可以呼叫,

比如下面,***mon_func被多個函式呼叫。

class myclass:

def __init__(self):

pass

def func1(self):

# do something

self.***mon_func()

def func2(self):

# do something

self.***mon_func()

def ***mon_func(self):

pass

10樓:匿名使用者

你好,如下:

函式重複也沒關係啊,只要是知道,

是什麼功能,在特定的時候觸發就行了。

python 在類中如何讓方法之間互相呼叫

11樓:碧血玉葉花

python 在類中方法之間互相呼叫的方法:

>>> class op():

... def __init__(self,p):

... self.p=p... def re(self):

... self.p+=1... def s(self):

... self.re()... print self.p...>>> vb=op(2)

>>> vb.s

>>>> vb.s()

3>>>

12樓:匿名使用者

>>> class op():

... def __init__(self,p):

... self.p=p... def re(self):

... self.p+=1... def s(self):

... self.re()... print self.p...>>> vb=op(2)

>>> vb.s

>>>> vb.s()

3>>>

13樓:匿名使用者

self.方法名()

python中函式外定義的變數在函式內可以使用嗎

14樓:匿名使用者

你寫的只是引用,也可以說讀取是可以的,但不能修改。

比如這樣寫,外面的i 仍然=0

15樓:反翽葚讛笀仕藖

嚴格的說,象你這麼用是絕對屬於沒有定義的。不過有時候又可以是因為,如果你在程式開頭函式前面定義一些變數,原則上它會自動變成global的。 除非你另外啟執行緒,或者是有可能有與它重名的變數,否則可以直接在函式體內使用,當然也可以在後面的語句中使用。

函數語言程式設計要記著ipo這個準則。就是每個函式最好都是有輸入input有輸出output。函式體就是處理process。

儘量不要使用全域性變數,也不要使用預設值。一個正規的做法是這樣: def example(a):

a=0 return a a=1 print example(a) 這是一個標準用法,你就不用為global變數頭痛了。

python如何引用其他模組中類的方法中的變數?

16樓:匿名使用者

沒法實現。

原因:你的tmp,只是class a中的一個函式fun內的臨時變數所以無法直接被外部呼叫。

並且只有fun函式執行時才存在,函式結束時,就不存在了。

關於變數的作用範圍,你可以參考:

【整理】python中變數的作用域(variable scope)想要可以被呼叫,可以試試:

改為:#a.py

class a()

tmp='123'

def fun()

。。。。。。

然後再去:

import a

print a.tmp

注意:此時,tmp就是class a中的全域性變數了。

17樓:波盡天下

你的原始**有若干語法錯誤,現已幫你修正並做好註釋,參考下列**:

# -*- coding: cp936 -*-#a.py

class a(): #後面要有冒號

tmp='123' #直接在a類裡定義tmp變數,不用寫方法# -*- coding: cp936 -*-#b.py

import a #匯入a模組

class b(): #後面要有冒號

def fun1(self): #類方法要有一個預設self引數print a.a.

tmp #輸出a模組中a類的tmp值tb=b() #需要把b類例項化,才可以使用裡面的fun1方法

tb.fun1() #直接輸出tmp值a.a.

tmp='321' #修改tmp的值tb.fun1() #看到tmp值已被修改input('完成,按任意鍵退出')

以上**在python2.6環境測試通過

希望對你有所幫助~

18樓:匿名使用者

(1)方法1

import 模組

模組.變數名

(2)方法2

from 模組 import 變數名

19樓:風灬颺

import xx 然後就可以通過xx.yy來使用,如xx.yy='abc' 進行修改

python新手,在python中類中的self

任何實現了特殊方法 getitem 的類 內建的列表類list 元祖類tuple 集合類set 字串類str都實現了這個特殊方法,因此它們都可以通過索引來訪問物件的成員 的物件都可以通過索引 下標 來訪問這個物件的成員。而self index 只不過是通過索引來訪問當前物件的成員罷了。這是一個例子 ...

python的類中函式引數沒有self會怎樣

不會怎麼樣 這樣的函式就不能呼叫類中的物件 如果加了就可以呼叫 我解釋一下python的類方法為什麼要寫一個self引數 self表示類例項自身,相當於c 中的this在類中用self可以引用類例項的成員,方法如專class test def printhello self print hello ...

用python怎麼用類的方法計算圓柱的表面積和體積

12345678910111213import mathclass cylinder def init self,r,h self.r r self.h h def volume self return math.pi self.r self.r self.h def area self retur...