類中方法辨識和作用

2021-10-21 01:56:35 字數 4365 閱讀 6173

python中有3個方法,即靜態方法(staticmethod),類方法(classmethod)和例項方法

如下:

classb(

object):

# 例項方法

deffoo

(self,x)

:print

("executing foo(%s,%s)"

%(self,x)

)# 類方法

@classmethod

defclass_foo

(cls,x)

:print

("executing class_foo(%s,%s)"

%(cls,x)

)# 靜態方法

@staticmethod

defstatic_foo

(x):

print

("executing static_foo(%s)"

%x)# 新建乙個例項

b = b(

)# 例項方法只能被例項化物件呼叫

b.foo(

"method"

)b.foo(b(),

"method"

)# 類法 既可以唄物件呼叫也可以被類本身呼叫

print

("類方法~~"

)b.class_foo(

"methond"

)b.class_foo(

"methond"

)# 靜態方法

print

("靜態方法~~"

)b.static_foo(

"method"

)b.static_foo(

"method"

)

\

類方法靜態方法

例項方法

b = b()

b.class_foo(x)

b.static_foo(x)

b.foo(x)

bb.class_foo(x)

b.static_foo(x)

不可以呼叫

注意:

類方法: cls; @classmethod

靜態方法: 無需傳遞self或者cls,直接傳引數; @staticmethod

例項方法: self

from math import sqrt

class

********

(object):

# 構造方法

def__init__

(self,a,b,c)

: self._a = a

self._b = b

self._c = c

# 例項方法

@staticmethod

defis_valid

(a,b,c)

:return a + b > c and b + c > a and a + c > b

# 求周長

defperimeter

(self)

:return self._a + self._b + self._c

# 求面積

defarea

(self)

: half = self.perimeter()/

2return sqrt(half *

(half - self._a)

*(half - self._b)

*(half - self._c)

)if ********.is_valid(3,

4,5)

:# 先判斷三邊是否能構成新的三角型, 能則建立

t = ********(3,

4,5)

print

(t.perimeter())

print

(t.area())

else

:print

("請輸入有效的邊長"

)

class

dog(

object):

def__init__

(self,t_w)

: self.t_w = t_w

@classmethod

defcreate_dog

(cls,t_w,t_shape)

: dog = cls(t_w)

# 動態給類新增屬性

dog.shape = t_shape

return dog

dog1 = dog(

"wwwww"

)dog2 = dog.create_dog(

"kkkkk"

,"bbbbbb"

)print

(dog1.t_w)

print

(dog2.shape)

4.1 靜態方法
classa(

object):

@staticmethod

defsub

(x,y)

:print

("%s...%s"

%(x,y)

)class

b(a)

: @staticmethod

defsub

(x,y)

:print

("%s.!!!!!.%s"

%(x,y)

)@staticmethod

defff()

:print

("在講課...."

)

4.2 類方法
class

person

(object):

country =

"china"

def__init__

(self,name)

: self.name = name

class

stu(person)

:def

__init__

(self)

:print

("i am py"

)@classmethod

defrun

(cls)

:print

("%s在奔跑"

%cls.country)

# 賦值

person.run = run

# 呼叫

s = stu(

)s.run(

)

class

ani(

object):

defrun

(self)

:print

("ani is running..."

)class

cat(ani)

:def

run(self)

:print

("cat 用4支腿 run"

)class

person

(ani)

:def

run(self)

:print

("person 用2支腿 run 用兩隻胳膊輪"

)p = person(

)p.run(

)c = cat(

)c.run(

)

__init__ : 構造方法 , 生成物件時呼叫

__del__: 解析函式, 釋放物件時呼叫

__dict__: 字典 記錄類屬性資訊

__len__: 獲得長度

__mro__: 方法查詢

__str__: 給使用者看

__repr__: 給解析器看

函式: map(func, *iterables) 對映

注意面試知識點: py2.x返回是列表 ,py3.x 返回迭代器

l =[1

,2,3

,4,5

,6]def

pow3

(x):

return x**

3l_pow3 =

map(

lambda x:

pow(x,3)

,l)print

(list

(l_pow3)

)

String類中方法詳解

1.indexof string str new string www.v321.top string substr1 new string v321 string substr2 new string top system.out println str.indexof o 查詢字元 o 第一次出...

子類和父類中方法和變數訪問許可權

1。乙個覆寫方法的訪問修飾符所提供的訪問許可權與被覆寫方法的訪問修飾符所提供的訪問許可權相比,至少要 一樣多2。但是。對乙個域來說,當它要隱藏另乙個域時,如果隱藏域的訪問修飾符提供的訪問許可權比被隱藏域的少,儘管這麼做不可取的,但是它確實是合法的 class base class derived e...

Python 類中方法的總結

python類 class 中方法的總結 1 例項方法 物件方法 定義格式 def 例項方法名 self pass 呼叫格式 物件名.例項方法名 使用場景 在方法中需要self 物件 2 類方法 定義格式 classmethod def 類方法名 cls pass 呼叫格式 類名.類方法名 或者 物...