python 3——自定義一個類、object類


 1.如何創建一個類?

自定義一個類:(https://www.runoob.com/python3/python3-class.html)

__init__(self):

 

  self代表類的實例,而非類

  類的方法:在類的內部,使用 def 關鍵字來定義一個方法,與一般函數定義不同,類方法必須包含參數 self, 且為第一個參數,self 代表的是類的實例。

 

 

  #私有的東西外部不能調用 

 

 

舉例:

  ORM中對於raw-queryset的分頁是不能用分頁器的,所以我們自建一個封裝sql的分頁類,調用即可

# 1.獲取數據庫連接
from django.db import connection

class 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      #每頁多少條數據

    def page(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建立) 

def page_p_sql2(request):
    #使用sql分頁類:
    from utils.sqlpage import SqlPaginator
    sql = ('select `id`, `username`, `nickname` from `weibo_user`')
    sql_params = []
    page_size = 10
    p = SqlPaginator(sql, sql_params, page_size)      #類的實例化
    page_data = p.page(5)
    for row in page_data:
        print(row)
    return HttpResponse('ok')

 

 


 

object類是什么?

  manager是ORM中進行數據庫查詢操作的接口,每個model都必須擁有一個manager,object是一個默認的manager。自定義的manager也要繼承它。

 

https://blog.csdn.net/qq_27828675/article/details/79358893

在python3不寫會默認調用:

 

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM