1. 程式人生 > >Python2與Python3中__bool__方法的差異

Python2與Python3中__bool__方法的差異

       學習Python面向物件程式設計的時候,遇到了一個很有意思的小問題。Python的__bool__方法不起作用的問題。

       我反覆讀了我手中的教程,確認了我寫的程式碼應該管用。可是在測試的時候卻一直不通過,後來發現我實現的__bool__方法似乎並不是Python本身的介面。

       程式碼如下:

class Demo():

       def __init__(self,value = 0):

              self.value = value

       def __bool__(self):

              return bool(self.value > 5)

obj = Demo()

obj.value = 0

if obj:

       print("yes")

else:

       print("no")

print(bool(obj))

       這幾天使用Win10下面的bash用著比較順手,我就一直在這個環境中進行程式的除錯。測試的結果如下:

[email protected]:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08/16$python bool_demo.py

yes

True

       這多少有點奇怪,居然跟我預期的不一樣。嘗試直接呼叫bool方法發現根本不存在之後,我猜測這或許是py2與py3的一點差異。Win10的Linux子系統中python版本是2.X,具體如下:

[email protected]:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08/16$python -V

Python 2.7.6

       我在win10上安裝的Python版本是3.X,切換CMD只有測試如下:

E:\01_workspace\02_programme_language\03_python\03_OOP\2017\08\16>pythonbool_demo.py

no

False

E:\01_workspace\02_programme_language\03_python\03_OOP\2017\08\16>python-V

Python 3.6.0

       最終結果符合預期!

       看起來,這應該是Python3與Python2之間的一點介面上的差異。如果從好用的角度考慮,自然是具有這種介面的Python3更加人性化一些。這會給程式設計師更大的自由度,也能夠實現與Python本身整合度更高的程式碼。

相關推薦

Python2Python3__bool__方法差異

       學習Python面向物件程式設計的時候,遇到了一個很有意思的小問題。Python的__bool__方法不起作用的問題。        我反覆讀了我手中的教程,確認了我寫的程式碼應該管用。可是在測試的時候卻一直不通過,後來發現我實現的__bool__方法似乎並不

python2python3編碼解碼的區別

需要 顯示 數據類型 在屏幕上 nbsp gb2312 python2 想要 區別 python2中程序默認數據類型為ASCII, 所以需要先將數據解碼(decode)成為Unicode類型, 然後再編碼(encode)成為想要轉換的數據類型(gbk,utf-8,gb180

關於Python2Python3的range

Python2中用range函式編寫一個有序列表,用random.shuffle()函式,打亂原有順序的列表 import random a=range(10) random.shuffle(a) print a 此時輸出結果為

使用python2python3md5的區別以及需要注意的地方

你可能不知道的是,有很多字元,使用python2和python3的md5加密出來的結果是不一樣的     # python2.7 zfc = "xxx" + chr(163) + "fj" cd = hashlib.md5(zfc).h

Python2python3的編碼問題

Python3資料型別存的是str:Unicode 和bytes:bytes Python2資料型別存的是str:bytes 和unicode:unicode python2 : print "中國"+u"美" 是不能拼接的 而 print “hello”+u"World

Python2Python3除法功能的異同

       Python 2中的除法以及除法的取餘功能跟C語言中的除法以及取餘功能全都類似,作為C語言的程式設計師接受起來還是很簡單的。但是Python 3中的除法預設改成了進行高精度的浮點計算,這樣就有時候讓人覺得有些不適應了。        我個人覺得,既然是高一些的

python2 python3 request (urlopen) 的用法

此處以 python2.7 和 python3.5 為例,對於其他 2.x 和 3.x 的版本也奏效。 在 python2.7中,urlopen 是在 urllib2 下面的。 示例程式碼如下: 在 python3.5 中,urlopen 是在 url

Centos6.5實現python2python3的並存

centos6.5中實現python2與python3的並存linux下python的安裝安裝步驟如下1 準備編譯環境 yum groupinstall ‘Development Tools‘ yum install zlib-devel bzip2-devel openssl-devel ncur

Python的元組,字典、計算器代碼實例及python2python3的區別

所有 time tor result inpu __name__ 字符 img 歡迎來到 1.計算器實例#/usr/bin/env python # -*- coding:utf-8 -*- # @time :2018/1/22 21:09 # @Author :Fen

Python2Python3 默認編碼的差異

org gbk 不一致 sof unicode ignore 第一條 支持中文 win32 最近在使用 Python3.4 做一些腳本實現,發現對於編碼的處理上和 Python2.6 有很大的不同,就此機會把相關知識做個梳理,方便需要的時候查閱。 先說下概念和差異: 腳本

Win10環境安裝Python2python3,並配置TensorFlow環境

安裝前需要知道的知識是: 1.TensorFlow只支援Python3版本 2.Python2與Python3他們預設的.exe執行檔案,名字均為:python.exe。要使他們共存必須要對他們的名字修改,否則,在win10命令框中,輸入Python命令時,會報錯“不是內部指令”。 3.安裝

windowspython2python3共存

python及pip安裝 一、python3及pip安裝 在python官網下載並安裝需要版本的python3 安裝過程中選擇“Add Python 3.6 to PATH”,並選擇自定義安裝 (可以選擇64位來裝,我只是截個圖示意下。。) 裝的時候pip

python2 python3的主要差異

1.__future__模組 python3 介紹的一些特性可以通過python2內建的__future__模組匯入 比如,python2 要實現在python3 中的整除 from __future__ import division 2.python3 中,print生命已經被p

windows下Python2Python3共存的使用方法

安裝環境: Windows版本:Windows 10 家庭中文版 Python 2 版本:Python 2.7.11 Python 3 版本:Python 3.5.2 1.安裝Python Python官方下載地址:https://www.python.org/downl

Python2Python3的區別(七):Python3使用mysqldb的方法

MySQLdb只支援Python2.,還不支援3. 可以用PyMySQL代替。 安裝方法: pip install PyMySQL 然後在需要的專案中,把 init.py中新增兩行: import pymysql pymysql.install_a

詳解:Python2的urllib、urllib2Python3的urllib以及第三方模組requests

先說說Python2中的url與urllib2(參考此處): 在python2中,urllib和urllib2都是接受URL請求的相關模組,但是提供了不同的功能。兩個最顯著的不同如下: 1、urllib2可以接受一個Request類的例項來設定URL請求的headers,

關於Python2python3共存的一點補充

python2 python3 本人實驗是在windows下cmd環境下完成的。 py -2與py -3分別指定運行python2和python3。但python命令依然可以使用,默認進入python3,virtualenv是使用pip3安裝的,只能新建python3的虛擬環境。 py -2

win10下安裝python2python3以及pip共存

用戶目錄 strong exe 路徑 org enc setup 最新版 .com 一 分別安裝python2和python3 註意: 安裝時記得勾選 Add Python.exe to Path 二 安裝pip Python3最新版本有pip,無需安裝 Pytho

Python2Python3的區別收集

python3 列表 2.7 tel edits str more 推導 test 1、python2中,在列表推導中for關鍵字之後的賦值操作可能會影響到列表推導上下文中的同名變量: Python 2.7.8 (default, Jun 30 2014, 16:03:49

Python2Python3print的不同點

換行 避免 不換行 現在 lap 信息 內置 引號 輸出字符串 在Python2和Python3中都提供print()方法來打印信息,但兩個版本間的print稍微有差異 主要體現在以下幾個方面: 1.python3中print是一個內置函數,有多個參數,而python2中p