《Python 3.5從零開始學》筆記-第8章 面向對象編程

前幾章包括開啓python之旅、列表和元組、字符串、字典、條件和循環等語句、函數等基本操做。主要對後面幾章比較深刻的內容記錄筆記。html

第8章 面向對象編程

8.3深刻類

#!/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')。

8.4繼承

 

多態

 

封裝

 

多重繼承

 

 

參考資料:

python3編碼問題

python編碼

 

參考資料:

python tutorial 3.6

Python博客

python多態

相關文章
相關標籤/搜索