python如何创建一个类_python 3——自定义一个类、object类

1.如何创建一个类?

__init__(self):

1682887-20190622120224977-380942891.png

self代表类的实例,而非类

类的方法:在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。

1682887-20190622120516619-1468339937.png

1682887-20190622120604236-134854923.png

1682887-20190622120708306-34482924.png

#私有的东西外部不能调用

1682887-20190622120821590-988899184.png

举例:

ORM中对于raw-queryset的分页是不能用分页器的,所以我们自建一个封装sql的分页类,调用即可

#1.获取数据库连接

from django.db importconnectionclass SqlPaginator(object): #python3可以不写,默认继承

#实现sql分页类:

def __init__(self, sql, params, page_size):

super().__init__()

self.sql= sql #要查询的sql

self.params = params #sql查询时候传递的参数

self.page_size = page_size #每页多少条数据

defpage(self, now_page):"""获取当前页:

:param now_page: 页码"""offset= (now_page - 1) * self.page_size #偏移量:每页的首位置

sql = self.sql + 'limit %s offset %s' #不要漏了sql的空格

#使用cursor:

sql = ('select `id`, `username`, `nickname` from `weibo_user`'

'where `username` = %s')#2。根据连接获取游标

cursor =connection.cursor()#3。根据游标执行sql

rest =cursor.execute(sql, [self.page_size, offset])#4。获取查询结果

rows =cursor.fetchall()return rows

以及这个class怎么使用?

还是在ORM中,所以在视图中调用(此处省略url建立)

defpage_p_sql2(request):#使用sql分页类:

from utils.sqlpage importSqlPaginator

sql= ('select `id`, `username`, `nickname` from `weibo_user`')

sql_params=[]

page_size= 10p= SqlPaginator(sql, sql_params, page_size) #类的实例化

page_data = p.page(5)for row inpage_data:print(row)return HttpResponse('ok')

object类是什么?

manager是ORM中进行数据库查询操作的接口,每个model都必须拥有一个manager,object是一个默认的manager。自定义的manager也要继承它。

在python3不写会默认调用:

1682887-20190622121207704-775897393.png

1682887-20190622121230930-676612584.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值