一.成员
1.类的成员 (函数,变量)
class Foo
#方法
def __init__(self,name)
self.name = name #实例变量字段
#方法
def func(self ):
pass
#obj,Foo 类的对像
#obj.Foo类的实例
类的成员分三类(在源码里边有,目前用不到)
变量:
实例变量 (字段)
共有的实列变量(字段)
私有的实例变量(字段)
类变量 (静态字段)
共有的实列变量(静态字段)
私有的实例变量(静态字段)
class Foo
name = "中国" #类变量
def __init__(self,name)
self.name = name #实例变量字段
def func1(self ):
pass
def func2(self):
pass
一般准则:以后对于实例变量(字段),使用对象访问即:obj.name
类变量(静态字段)访问时,使用类方法.即:Foo.name(实在不行在用对象访问)
什么时候用类变量呢??
当所有对象中有公共字段时且
方法:
1.实例方法
2.静态方法
3.类方法
------------------------没必要写实例方法---------------------------------
class Foo (object)
def __inint__(self ,name)
self.name = name
def func(self):
print("132")
obj.Foo()
obj.func()
------------------------有必要写实例方法---------------------------------
class Foo (object)
def __inint__(self ,name)
self.name = name
def func(self): #实例方法
print(self.name)
@staticmethod #静态方法 (相当于把他当成函数去用了,反正你也不用,但是在这个类中)
def sidplay(self):
print("666")
obj.Foo()
obj.func()
Foo.display()
如果在方法无需使用对象中封装的值,那么就可以使用静态方法
总结:
1.编写时: 方法上方写@staticmethod
方法参数可有可无
2.调用时: 类.方法
对象.方法名
什么时候用呢??
无需调用对象中以封装的值时用静态方法
3.类方法 (类似于静态方但在编写时稍有不同,有参数)
class Foo (object)
def __inint__(self ,name)
self.name = name
@classmethod #类方法
def show (cls,x1,x2):
print(cls,x1,x2)
#调用
Foo.show(1,8)
什么时候用呢??
调用类中的值的时候,就用这个方法,他会自动的帮你传递
总结:
1.定义时: 方法上面写:@classmethod
方法参数:至少有一个cls参数,你不写pycharm会帮你写上
2.执行时: 类名.方法名()
强加一个面试题:
静态方法和类方法还有实例方法的区别?
答:从三个方面去说,定义,执行时,应用场景
class Foo(object)
def __init__(self):
pass
def __display(self,arg):
print("私有方法",arg)
def func (self):
self,__display(132)
属性 (通过方法改造过来的)
class Foo(object)
def __init__(self):
pass
@proeperty #变成属性
def start(self):
return 1
@property #变成属性
def end (self):
return 10
obj = Foo()
print(obj.start)
print(obj.end)
总结:
1.编写时: 方法上面写上@property
方法参数:只有一个self
2.调用时:无需加括号,对象 方法
3.应用场景:对于简单的方,当无需传参且有返回值的时候
练习题:
data_list = []
for i in range(1,901)
data_list.append("alex-%s"%i)
#要查看的页面
page = int(input("请输入你要查看的页码:"))
#每页显示10条
per_page_num = 10
page_data_list =data_list[0:10]
for item in
................