字段、方法、属性
1 #静态字段与普通字段
2 class Foo:
3 #静态字段
4 contry = '中国'
5 def __init__(self,name):
6 #普通字段
7 self.name = name
8
9 #普通字段的调用需要对象调用,需要实例化对象
10 hn = Foo('河南')
11 print(hn.name)
12 >>>河南
13 hb = Foo('河北')
14 >>>河北
15 #静态字段由类调用,不用实例化对象,python中静态字段 对象与类都能访问类中的静态字段,一般情况下不适用对象调用静态字段
16 print(Foo.contry) 17 >>>中国
#补充静态字段,代码加载的时候已经创建,普通字段实例化对象时调用
#构造方法,静态方法,普通方法,类方法
class Foo:
#构造方法
def __init__(self,name):
self.name = name
# 普通方法,由对象去调用,属于类
def show(self):
print(self.name)
#静态方法,属于类,不能被对象调用,用类调用
# 静态方法的使用,类中的方法不调用对象时,使用静态方法,与函数相同
@staticmethod
def f1(args):
print(args)
@classmethod
def f2(cls):
ret = cls('alex')
ret.show()
#普通方法使用对象效用
obj = Foo('liguangxu')
obj.show()
>>>liguangxu
#静态方法使用类调用
Foo.f1('abc')
>>>abc
#类方法使用类调用,默认把类名当参数传入,(必须有)可在类中初始化对象。
Foo.f2()
>>>alex
1 class Foo:
2 def __init__(self,all_count):
3 self.all_count = all_count
4
5 #属性,拥有字段功能的方法
6 @property
7 def all_pager(self):
8 a1,a2 = divmod(self.all_count,10)
9 if a2 == 0:
10 return a1
11 else:
12 return a1+1
13 #属性的修改
14 @all_pager.setter
15 def all_pager(self,value):
16 print(value)
17 #属性的删除
18 @all_pager.deleter
19 def all_pager(self):
20 print('del all_pager')
21
22 p = Foo(101)
23 #方法的调用需要用对象.方法名()
24 #属性的调用要用对象.属性
25 print(p.all_pager)
26 #>>>11
27 #字段拥有修改的功能,属性也有
28 #属性的修改
29 p.all_pager = 111
30 #>>>111
31 del p.all_pager
32 #>>>def all_pager
1 #属性的另一种表现形式
2 class Pager:
3 def __init__(self, all_count):
4 self.all_count = all_count
5
6 def f1(self):
7 return 123
8
9 def f2(self):
10 pass
11 def f3(self):
12 pass
13
14 foo = property(fget = f1,fset = f2,fdel =f3)
15
16 p = Pager(101)
17
18 result =p.foo#调用属性,默认执行第一个参数的函数
19 print(result)
20
21 p.foo = 'alex'#修改属性值,默认执行第二个参数fset
22
23 del p.foo#删除属性,指定第三个参数的函数