前幾章包括開啓python之旅、列表和元組、字符串、字典、條件和循環等語句、函數等基本操做。主要對後面幾章比較深刻的內容記錄筆記。html
#!/usr/local/bin/python3 # -*- coding:utf-8 -*- class MyClass(object): i=123 def f(self): return 'hello world' useClass=MyClass() print('類屬性:',useClass.i) print('類方法:',useClass.f()) #打印系統默認的編碼 import sys print(sys.getdefaultencoding())
輸入,必須用python3,若是用python的話,會打印出編碼而不是中文:python
python3 class_test.py
程序執行結果以下:編程
類屬性: 123
類方法: hello world
utf-8
類中定義方法:第一個參數必須是self,其餘和普通函數同樣。函數
類中調用方法:實例變量上直接調用,除了self不用傳遞,其餘參數正常傳入。 編碼
類對象支持兩種操做:屬性引用(obj.name,obj表明類對象,name表明屬性)、實例化。spa
若類不顯式地定義一個__init__()方法,則程序默認調用一個無參的__init__()方法。一個類中可定義多個構造方法,可是後面的構造方法會覆蓋前面的構造方法,只能根據最後一個構造方法的形式進行實例化。建議一個類中只定義一個構造函數。:.net
#!/usr/local/bin/python3 # -*- coding:utf-8 -*- class MyClass(object): i=123 def __init__(self.name): self.name = name def f(self): return 'hello '+self.name useClass=MyClass('angela') print('類屬性:',useClass.i) print('類方法:',useClass.f())
輸出:code
類屬性: 123
類方法: hello angela
#!/usr/local/bin/python3 # -*- coding:utf-8 -*- class Student(object): def __init__(self,name): self.name = name def info(self): print('hello '+self.name) stu=Student('angela') print('修改前的姓名:',stu.name) stu.info()
#能夠在類外部修改類的內部屬性 stu.name = 'andrew' print('修改後的姓名:',stu.name) stu.info()
輸出:htm
修改前的姓名: angela
hello angela
修改後的姓名: andrew
hello andrew
如上,能夠在類外部修改類的內部屬性。要讓內部屬性不讓外部訪問,屬性名稱前加兩個下劃線,self.__name。對象
如何訪問類的私有變量:
#!/usr/local/bin/python3 # -*- coding:utf-8 -*- class Student(object): def __init__(self,name): self.__name = name def info(self): print('hello '+self.__name) def getName(self): return self.__name def setName(self,name): self.__name = name stu=Student('angela') print('修改前的姓名:',stu.getName()) stu.info() stu.setName('andrew') print('修改後的姓名:',stu.getName()) stu.info()
輸出:
修改前的姓名: angela
hello angela
修改後的姓名: andrew
hello andrew
這樣,setName()修改內部屬性時能夠參數檢查,若是傳入參數不知足條件,就處理異常。
類的私有方法和私有變量相似,def __setName(self, name)。經過公有方法調用私有方法,self.__setName('Andrew')。
多態
封裝
多重繼承
參考資料:
參考資料: