类成员:
# 字段
- 普通字段,保存在对象中,执行只能通过对象访问
- 静态字段,保存在类中, 执行 可以通过对象访问 也可以通过类访问
# 方法
- 普通方法,保存在类中,由对象来调用,self=》对象
- 静态方法,保存在类中,由类直接调用
- 类方法,保存在类中,由类直接调用,cls=》当前类
######## 应用场景:
如果对象中需要保存一些值,执行某功能时,需要使用对象中的值 -> 普通方法
不需要任何对象中的值,静态方法
静态字段
class Province:
# 像这样直接写在类里的字段叫:静态字段,它属于类。一般在多个对象共用一个字段时使用,节省内存。
country = '中国'
# 普通方法
def __init__(self, name):
# 普通字段,属于对象.普通字段只有在创建对象时才建立。
self.name = name
henan = Province('河南')
print(Province.country)
静态方法:
class abc:
@staticmethod # 只在普通方法上面加这个装饰器,就会变成静态方法
def add(x,y): # 静态方法 self 就不是必须的了,可以不写。
print(x+y)
abc.add(2,4) # 调用静态方法,可以直接用 类名.方法名 的方式调用。
类方法:
class abc:
@classmethod # 装饰器加上之后变成类方法
def add(cls): # cls 是当前类名,潜规则写成 cls
print("这是一个类方法")
abc.add() # 调用同样是 类名 . 方法名()
模拟分页:
class page_fenye:
def __init__(self, s_page):
self.page = int(s_page)
@property # 加上这条装饰器,可以使下面的方法在调用时不用加()。
# 还有这样一种写法:per=property(fget=statrpage)
def statrpage(self):
val = (self.page - 1) * 10 # 选择指定数的前10个内容
return val
@property
def endpage(self):
val = self.page * 10
return val
li_list = []
for i in range(1000):
li_list.append(i)
p = input("请输入页:")
obj = page_fenye(p)
print(li_list[obj.statrpage:obj.endpage]) # 因为上面加了装饰器,所以obj.endpage()不用加()。