python之建立類的兩種方法
python裡,類是物件導向的基礎。
建立類第一種普遍方式可能都清楚,用class關鍵字:
#第一種方法建立類
class A(object):
def __init__(self, name):
self.name = name
f = A("lkk")
這樣就簡單完成了一個A類的建立,我們嘗試列印一下f的型別:
print(type(f)) #列印f的型別,結果是A(我們寫的class A)
結果為
我們不妨在列印一下A的型別:
print(type(A)) #不妨再列印一下A的型別,居然是type
會發現結果是:
總結一下:type就是類的類
類的類,也就是元類。元類就是用來建立類的“東西”。你建立類就是為了建立類的例項物件,不是嗎?Python中的類也是物件。元類就是用來建立這些類(物件)的,元類就是類的類。
於是第二種建立類的方法:type動態建立類
type有一個方法:type(類名,父類名,方法名(字典形式))用來動態建立類
三個引數具體內容:
- 第一個引數:要建立的class的名稱
- 第二個引數:繼承的父類集合,Python支援多重繼承,如果只有一個父類,寫(obj,);
- 第三個引數:class的方法名字典,字典內容為‘類裡面方法名稱’:‘寫好的函式名稱’,建立之後使用類方法名稱呼叫
舉個例子:
#第二種方法建立類
def func(self): #第一個方法
print('hello %s'%self.name)
def __init__(self,name,age): #初始化方法
self.name = name
self.age = age
#type('叫什麼的類','繼承誰','它裡面有哪些方法')
Foo = type('Foo', (object,), {'talk':func,
'__init__':__init__})
f = Foo('lkh','20')
f.talk()
print(type(Foo))
等同於:
class Foo(object):
def __init__(self, name, age):
self.name = name
self.age = age
def func(self):
print('hello %s' % self.name)
相關文章
- 兩種動態建立表格的方法
- Python建立類方法Python
- MySQL建立資料庫的兩種方法MySql資料庫
- 建立安裝程式的兩種方法 (轉)
- python建立類和類方法Python
- PHP呼叫java類的兩種方法(轉)PHPJava
- Java 建立 PDF 檔案包的兩種方法Java
- laravel建立新model資料的兩種方法Laravel
- 建立連結串列兩種方法的區別
- PostgreSQL建立自增主鍵的兩種方法SQL
- ASP建立SQL Server資料庫的兩種方法SQLServer資料庫
- python生成requirements.txt的兩種方法PythonUIREM
- python中合併表格的兩種方法Python
- python清空字典的兩種方法比較Python
- C++中建立物件的兩種方法及其區別C++物件
- 在儲存過程中建立表的兩種方法儲存過程
- Python中類的建立和使用方法Python
- Python建立單例模式的5種方法Python單例模式
- 用兩種方法把JSON資料格式轉換為Python的類物件JSONPython物件
- python執行linux命令的兩種方法PythonLinux
- 建立Session物件的兩種方式Session物件
- Python建立單例模式的5種常用方法Python單例模式
- Python保留兩位小數五種常用的方法!Python
- Python遍歷資料夾常用的兩種方法!Python
- Python 爬取網頁資料的兩種方法Python網頁
- Python隨機生成驗證碼的兩種方法Python隨機
- 建立oracle dblink 的兩種方式Oracle
- Treeset的兩種排序方法排序
- Java 建立類的四種方式Java
- JavaScript類建立的幾種方式JavaScript
- Python併發程式設計之建立多執行緒的幾種方法(二)Python程式設計執行緒
- Python中的__init__()方法整理中(兩種解釋)Python
- python兩種獲取剪貼簿內容的方法Python
- python list排序的兩種方法及例項講解Python排序
- 判斷python字典中key是否存在的兩種方法Python
- Python獲取list中指定元素索引的兩種方法Python索引
- 建立Arkts的類,方法
- c語言 - 交換兩個變數(不建立臨時變數)兩種方法C語言變數