027class_part1

来源:https://www.cnblogs.com/-nbloser/archive/2018/01/19/8318474.html
-Advertisement-
Play Games

因為有基礎,我直接簡單寫了##定義類,創建對象,調用對象方法,返回值 ##添加屬性,和Java有區別 ##構造方法 python構造方法只有一個或者沒有,和Java不同 ###繼承 1 class Father: 2 def f(self): 3 print('father') 4 def smok ...


因為有基礎,我直接簡單寫了
##定義類,創建對象,調用對象方法,返回值

class  person:
    def  speak(self,x):
    print('love',x)
    return  x + '*********'

xia = person()
s = xia.speak('theonewholoveme')
print(s)

 

##添加屬性,和Java有區別

class  B:
    def  func(self,x = '**'):
        print(self.name,x)
z
= B() z.name = 'xia' z.func('21')

 

##構造方法

def  __init__(self):
    print('123')

def  __init__(self,name,age):
  print('3',name,age)

python構造方法只有一個或者沒有,和Java不同

###繼承

 1 class  Father:
 2     def  f(self):
 3         print('father')
 4     def  smoke(self):
 5         print('f_吐煙')
 6 
 7 class  Son(Father):
 8     def  s(self):
 9         print('son')
10     def  smoke(self):
11         super(Son,self).smoke()  # super(當前類名,self).父類方法,第一種調用父類方法
12         print('s_吐煙')
13         Father.smoke(self)  # 第二種調用父類方法,推薦使用super
14         
15 s=Son()
16 s.smoke()
View Code

#多繼承
類外部調用方法順序

 1 class  GF:
 2     def  a1(self):
 3         print('grand.a1')
 4 
 5 class  F1:
 6     def a(self):
 7         print('F1.a')
 8 
 9 class  F2(GF):
10     def a(self):
11         print('F2.a')
12 
13 class S(F1,F2):
14     pass
15 
16 son = S()
17 son.a()         # F1.a,那個在前就調用哪個的,這裡F1在前面,如果是S(F2,F1),這樣就是F2.a了
18 son.a1()        # grand.a1,從F1往上找找不到就會從右邊F2這邊找
View Code

類方法內部調用對象方法

 1 class  BaseRequest:
 2     def  __init__(self):
 3         print('BaseRequest.__init__')
 4     
 5 class  RequestHandler(BaseRequest):
 6     def  __init__(self):
 7         print('RequestHandler.__init__')
 8     def  server_forever(self):
 9         print('RequestHandler.server_forever')
10         self.process_request()   # self還是Son創建的對象,所以還是從Minx開始找
11 
12 def  process_request(self):
13     print('RequestHandler.process_request')
14 
15 class  Minx:
16     def  process_request(self):
17         print('Minx.process_request')
18 
19 class  Son(Minx,RequestHandler):
20     pass
21 
22 o = Son()                       #RequestHandler.__init__
23 o.server_forever()   # RequestHandler.server_forever#Minx.process_request
View Code

 

###多態(瞭解)
不過,在python裡面忽略多態,支持多態,所以我就不寫了

 

###類的成員之欄位
普通欄位    self.***
靜態欄位    直接在類裡面

class  Province:
    country = '中國'
    def __init__(self,name):
        self.name = name
guangdong = Province('廣東')
print(Province.country)              # 中國    # 靜態欄位,在類裡面,可以通過對象訪問也可以通過類訪問
print(guangdong.name)                  # 廣東    # 普通欄位,在對象裡面

 

###類的方法
普通方法 1、對象調用;

2、通過類調用普通方法(不使用)

class  P:
    def  f(self):
        print('ffff')
obj = P()
P.f(obj)   # 這樣調用,蠻無聊的。不會使用

靜態方法:加@staticmethod

class  P:
    @staticmethod
    def  sta():
        print('statics')
P.sta()

類方法:和靜態方法差不多,參數問題,這個不重要(不會使用)

@classmethod
def  classmd(cls):
    print(cls)

P.classmd()

 

#類成員之屬性

class  P:
    @property
    def  per(self):
        print('property')
        return  1 
        
    @per.setter
    def  per(self,val):
        print(val)
    
    @per.deleter
    def  per(self):
        print('deleter')
    
x = P()            
r = x.per             # property, 有類似x.per的就執行  @property下函數 ,需要有返回值
print(r)             #  1
x.per = 123        # 自動顯示123     有類似 x.per = *** 的就執行 @per.setter 下函數
del   x.per          # 顯示deleter    有類似del  x.per 的就執行@per.deleter 下函數

property實現的功能相當於Java的get,.setter相當於實現set,deleter相當於delete

eg:利用屬性實現分頁

 1 #__author:_nbloser
 2 #date:2018/1/19
 3 
 4 class  Pergination:
 5     def  __init__(self,current_page):
 6         try:
 7             p = int(current_page)
 8         except:
 9             p = 1
10         self.page = p
11 
12     @property
13     def  start(self):
14         val = (self.page-1)*10
15         return  val
16 
17     @property
18     def  end(self):
19         val = self.page*10
20         return  val
21 
22 li = []
23 for  i  in  range(1000):
24     li.append(i)
25 
26 while  True:
27     p = input('頁碼:')
28     obj = Pergination(p)
29 
30 print(li[obj.start:obj.end])
View Code

 

 



 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • PHP sleep函數一般用於定時執行任務中,表示延遲多少秒在執行程式。這裡主機吧主要給大家講一下sleep函數的語法和應用實例。 sleep函數語法: 應用實例: ...
  • typedef 是C語言提供的一種高級數據特性,它能幫助我們給某一類型創建我們自己的名字,方便我們編碼和使用。 ...
  • 昨天我們使用了dlib和opencv進行了人臉檢測標註(http://www.cnblogs.com/take-fetter/p/8310298.html) 但是運行環境是基於windows的而且可能因為我的電腦上的visual studio配置比較完備,安裝運行沒有出現任何問題. 因為之後我打算把 ...
  • 迭代器 可迭代對象:可迭代對象實現了__iter__方法,該方法返回一個迭代器對象。 迭代器: 那麼什麼迭代器呢?它是一個帶狀態的對象,他能在你調用next()方法的時候返回容器中的下一個值,任何實現了__iter__和__next__(python2中實現next())方法的對象都是迭代器,__i ...
  • 辛苦Mark的 Google公司關於Python的風格規範,emmm~ ...
  • 1. 安裝mysql-python 運行下麵的命令: 安裝以後: 如果沒有出錯,就表明安裝成功。 2. 連接MySQL 其中localhost是伺服器名,root是用戶名,1是密碼,fs是資料庫名稱,前提是MySQL資料庫設置了相應的用戶名和密碼。 連接成功以後,通過 獲取游標。 3. 查詢數據 c ...
  • ****************************************************************************************** excel表格導出,使用POI實現 ***************************************** ...
  • 一、簡介 MongoDB是一款強大、靈活、且易於擴展的通用型資料庫 1、易用性 2、易擴展性 3、豐富的功能 4、卓越的性能 二、MongoDB基礎 a、文檔是MongoDB的核心概念。文檔就是鍵值對的一個有序集{'msg':'hello','foo':3}。類似於python中的有序字典 b、集合 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...