Python 類的一些特殊方法

Python 類的一些特殊方法


Python 的類中存在一些特殊的方法,使得我們自己構(gòu)造的類能夠更加清晰并支持某些操作

Code

from array import array
import math

    typecode = 'd'

    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __iter__(self):
        return(i for i in (self.x, self.y))

    def __repr__(self):
        class_name = type(self).__name__
        return '{}({!r},{!r})'.format(class_name, *self)

    def __str__(self):
        return str(tuple(self))

    def __bytes__(self):
        return (bytes([ord(self.typecode)]) + bytes([array(self.typecode, self)]))

    def __eq__(self, other):
        return tuple(self) == tuple(other)

    def __abs__(self):
        return math.hypot(self.x, self.y)

    def __bool__(self):
        return bool(abs(self))

對(duì)象的表示形式

所謂對(duì)象的表現(xiàn)形式,在這里可以理解為對(duì)于對(duì)象的一個(gè)描述,Python中提供以下兩種函數(shù)來顯示獲取這種描述

repr()
以便于開發(fā)者理解的方式返回對(duì)象的字符串表示形式,亦可通過輸入實(shí)例名稱來獲取

str()
以便于用戶理解的方式返回對(duì)象的字符串表示形式,亦可通過print函數(shù)來獲取

對(duì)于Code部分所定義的類,調(diào)用方法和結(jié)果如下

a = Vector2d(3,4)

# __repr__ 所定義的方法
a
# Vector2d(3,4)
repr(a)
# 'Vector2d(3,4)'

# __str__ 所定義的方法
print(a)
# (3, 4)
str(a)
# '(3, 4)'

其它一些特殊方法

__iter__
使所構(gòu)造的實(shí)例為一可迭代對(duì)象

for i in a:
    print(i)
# 3
# 4

__bool__
實(shí)例的布爾值

if a:
    print(f'a is {bool(a)}')
# a is True

__eq__
判斷實(shí)例是否和某一元素相等

a == (3, 4)
# True

a == (4, 4)
# False
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 我是何人 尋覓林間岑寂的小徑 赤裸腳踝 踏過破敗 尋一樹花開 等青鳥歸來 何人一曲挽歌 引得風(fēng)吹花落 我在哪里 走...
    楠小楓閱讀 485評(píng)論 2 10
  • 今天有點(diǎn)放縱,因?yàn)槭切瞧诹詻]控制好晚上睡覺時(shí)間,差不多快十點(diǎn)了讓孩子睡覺,晚了一個(gè)小時(shí),本來為了孩子的身...
    平安_f604閱讀 104評(píng)論 0 0
  • 人一定要有夢想,人生就像馬拉松,就是從一個(gè)矩陣跑到下一個(gè)矩陣,永遠(yuǎn)往前走一步,人生不能麻木,如果麻木了就不會(huì)往前了...
    小芳未來首席閱讀 341評(píng)論 0 0
  • 簡介 Spring Cloud為開發(fā)者們提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如:配置管理、服務(wù)發(fā)現(xiàn)、斷...
    9527的編程夢閱讀 1,124評(píng)論 0 2

友情鏈接更多精彩內(nèi)容