python中有3個方法,即靜態方法(staticmethod),類方法(classmethod)和例項方法如下:
\classb(
object):
# 例項方法
deffoo
(self,x)
("executing foo(%s,%s)"
%(self,x)
)# 類方法
@classmethod
defclass_foo
(cls,x)
("executing class_foo(%s,%s)"
%(cls,x)
)# 靜態方法
@staticmethod
defstatic_foo
(x):
("executing static_foo(%s)"
%x)# 新建乙個例項
b = b(
)# 例項方法只能被例項化物件呼叫
b.foo(
"method"
)b.foo(b(),
"method"
)# 類法 既可以唄物件呼叫也可以被類本身呼叫
("類方法~~"
)b.class_foo(
"methond"
)b.class_foo(
"methond"
)# 靜態方法
("靜態方法~~"
)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)
(t.perimeter())
(t.area())
else
("請輸入有效的邊長"
)
4.1 靜態方法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"
(dog1.t_w)
(dog2.shape)
4.2 類方法classa(
object):
@staticmethod
defsub
(x,y)
("%s...%s"
%(x,y)
)class
b(a)
: @staticmethod
defsub
(x,y)
("%s.!!!!!.%s"
%(x,y)
)@staticmethod
defff()
("在講課...."
)
class
person
(object):
country =
"china"
def__init__
(self,name)
: self.name = name
class
stu(person)
:def
__init__
(self)
("i am py"
)@classmethod
defrun
(cls)
("%s在奔跑"
%cls.country)
# 賦值
person.run = run
# 呼叫
s = stu(
)s.run(
)
class
ani(
object):
defrun
(self)
("ani is running..."
)class
cat(ani)
:def
run(self)
("cat 用4支腿 run"
)class
person
(ani)
:def
run(self)
("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 呼叫格式 類名.類方法名 或者 物...