一、封装
1、如何创建类
class 类名:
pass
2、创建方法
构造方法,__init__(self,arg)
obj = 类('a1')
普通方法
obj = 类(‘xxx’)
obj.普通方法名()
3、面向对象三大特性之一:封装
class Bar:
def __init__(self, n,a):
self.name = n
self.age = a
self.xue = 'o'
b1 = Bar('alex', 123)
b2 = Bar('eric', 456)
二、继承
class father:
f1(sef,arg):
pass
f2(self, arg)
pass
class son:
f1(self, arg):
pass
f2(self, arg):
print('test')
super(son,self).f2(arg)
father.f2(self,arg)
三、多态
在一个方法里边传入不同的变量类型就是多态
四、
1、类的成员变量
class Provice:
country = '中国' #静态变量可以通过类和对象来访问
def __init__(self, name):
self.name=name #普通变量只能通过对象来访问
2、方法
class A:
#普通方法
def f(self, name):
self.name = name
#静态方法
@staticmethod
def stat(a1, a2):
print(a1,a2)
#类方法
@classmethod
def f2(cls):
print(cls)
print('ssss')
a = A() #普通方法通过对象来调用
a.f('123')
A.stat(1, 2) #静态方法通过类直接调用
A.f2(A)
类成员:
# 字段
- 普通字段,保存在对象中,执行只能通过对象访问
- 静态字段,保存在类中, 执行 可以通过对象访问 也可以通过类访问
# 方法
- 普通方法,保存在类中,由对象来调用,self=》对象
- 静态方法,保存在类中,由类直接调用
- 类方法,保存在类中,由类直接调用,cls=》当前类
######## 应用场景:
如果对象中需要保存一些值,执行某功能时,需要使用对象中的值 -> 普通方法
不需要任何对象中的值,静态方法
# 属性,特性
- 不伦不类
五、属性
Class A:
__init__(self, name):
self.name = name
self.age = age
@property
def per(self):
print(self.name)
return 123
@persetter
def per(self, var):
print('456')
return var
@perdeleter
def per(self):
print('890')
调用方法:
obj = A()
obj.per
x = obj.per
print(x)
del obj.per
#################################################
Class Pergination:
__init__(self, page):
self.page = page
@property
def start_page(self):
return (self.page-1)*10
@property
def end_page(self):
return (self.page)*10
li = []
for i in range(1000):
li.append(i)
while True:
p = input('请输入要查看的页码:') # 1,每页显示10条
obj = Pergination(p)
print(li[obj.start:obj.end])
###################################
class Foo:
def f1(self):
return 123
def f2(self,v):
print(v)
def f3(self):
print('del')
per = property(fget=f1,fset=f2,fdel=f3,doc='adfasdfasdfasdf')
# @property
# def per(self):
# return 123
obj = Foo()
# ret = obj.per
# print(ret)
# obj.per = 123456
del obj.per