python運算子過載
剛剛學習python,對於運算子過載,也不是很懂,個人理解如下:
類的專有方法(未截完):
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
表示python建立的類中有這麼多的方法,這些方法是類預定義的,在類的例項進行一些操作時,會呼叫相關的方法。
class Complex: def __init__(self, realpart, imagpart): self.r = realpart self.i = imagpart # def __str__(self): # return "r is {0}, i is {1}".format(self.r, self.i) x = Complex(2.0, -4.4) print(x)Complex類在沒有過載__str__(self)方法時
輸出如下
<__main__.Complex object at 0x011A8410> 即地址
class Complex: def __init__(self, realpart, imagpart): self.r = realpart self.i = imagpart def __str__(self): return "r is {0}, i is {1}".format(self.r, self.i) x = Complex(2.0, -4.4) print(x)
在Complex類過載__str__(self)方法後
輸出如下
r is 2.0, i is -4.4
在這裡類似Java中的重寫toString()方法。
如果想對例項進行+,- 等運算子操作
class Complex: def __init__沒有過載__add__()方法時:報錯了(錯誤是不支援操作型別+)(self, realpart, imagpart): self.r = realpart self.i = imagpart # def __add__(self, other): # return self.i + self.r + other; x = Complex(2.0, -4.4) print(x + 2)
Traceback (most recent call last):
File "F:/pycharm/workspace/test21.py", line 9, in <module>
print(x + 2)
TypeError: unsupported operand type(s) for +: 'Complex' and 'int'
在過載__add__()方法後
class Complex: def __init__(self, realpart, imagpart): self.r = realpart self.i = imagpart def __add__(self, other): return self.i + self.r + other; x = Complex(2.0, -4.4) print(x + 2)
正常輸出(精度異常)
-0.40000000000000036
相關推薦
Python——運算子過載(2)
繼續介紹運算子過載的知識。 ======================================================================== 屬性引用:__getattr__和__setattr__ __getattr__方法是攔截屬性點號
Python——運算子過載(1)
運算子過載 關鍵概念: 1.運算子過載讓類攔截常規的Python運算。 2.類可過載所有的Python表示式運算子。 3.類也可過載列印、函式呼叫、屬性點號運算等內建運算。 4.過載使類例項的行為像內建型別。 5.過載是通過特殊名稱的類方法來實現的。 運算子過載只是意味著在
Python 運算子過載
常見的運算子過載方法 方法 過載 呼叫 __init__ 建構函式 物件建立: X = Class(args) __del__ 解構函式 X物件收回 __add__ 運算子+ 如果沒有_i
python運算子過載
剛剛學習python,對於運算子過載,也不是很懂,個人理解如下: 類的專有方法(未截完): ------------------------------------------------------------------------------------------
Python ==運算子過載
在Python中is、==是兩個運算子,對物件進行比較,分別對ID,TYPE,Value進行比較。 "is"比較ID,TYPE,Value三維,而"=="僅比較value。 實驗發現其實is,==僅僅是比較一些簡單的基礎變數。 class Test(object):
Python:Python運算子過載(簡版)
__add__(self, other): + __sub__(self, other): - __mul__(self, other): * __matmul__(self, other): @ __truediv__(self, other): / __floordiv_
Python 看書的一些記錄 運算子過載
1.類和模組有什麼關係? (1)類是模組的一部分,是模組物件的屬性。 (2)類和模組都是名稱空間,但是類是對於語法的。模組是對於檔案的 (3)類支援多個例項,但是模組被匯入時只有一個。 2.什麼是抽象超類(抽象基類)? 抽象超類就是指類的部分行為需要由其子類提供 class
(D20)Python-異常高階,運算子過載
異常(高階) 異常相關的語句: try-except try-finally raise 觸發異常,發生錯誤通知 assert 根據條件觸發AssertionError型別的錯誤通知 with 語句 with語句 語法:
python day18 異常(高階) 一元運算子過載 、 關係運算符的過載 、
目錄: 異常(高階) 一元運算子過載 、 關係運算符的過載 、 with語句 語法: with 表示式1 [as 變數名1], 表示式2 [as 變數名2], ... 作用: 用於對資源訪問的場合,確保使用過程中不管是否發生
python學習筆記22(運算子過載)
運算子過載 不同型別的物件之間的運算子會有不同的解釋,如: print(1 + 2) print("1" + "2") #不同的型別用加法會有不同的解釋 利用運算子過載實現兩個字串數字相加 class Person(object): def __init__(sel
Python的運算子過載 __iter__()和 __next__()
Python語言提供了運算子過載功能,增強了語言的靈活性,這一點與C++有點類似又有些不同。鑑於它的特殊性,今天就來討論一下Python運算子過載。 Python語言本身提供了很多魔法方法,它的運算子過載就是通過重寫這些Python內建魔法方法實現的。
Python一一運算子過載
基礎知識 運算子過載讓類攔截常規的Python運算。 類可過載所有Python表示式運算子。 類也可以過載列印、函式呼叫、屬性點號運算等內建運算。 過載使類例項的行為像內建型別。 過載是通過提供特殊名稱的類
C++運算子過載詳細解說及程式碼編寫
一、不能過載的運算子: (1) "."(類成員訪問運算子) (2)" .*"(類成員指標訪問運算子) (3) "::"(域運算子) (4)"sizeof"(長度運算子) (5) " ?:"(條件運算子)
kotlin運算子過載
//運算子過載定義 //任意類可以定義或者過載父類的基本運算子 //通過運算子的具名函式定義 // //過載運輸符 方法名稱 引數個數要對應 引數型別和返回值可以隨意定義 class Complex(var real:Double,var imaginary:Double){
python - 運算子
#-*- coding:utf-8 -*-# author:jiaxy# datetime:2018/11/3 10:47# software: PyCharm Community Edition# 運算子# 1. 算術運算子# 加減乘除 + - * /# 取模/取餘 % 常用場景:判斷奇偶數a = 1
Python3底層函式重寫和運算子過載
底層函式重寫 Python是支援重寫底層函式的,在列印物件時, &n
(轉)為什麼operator運算子過載一定要為友元函式呢
如果是過載雙目操作符(即為類的成員函式),就只要設定一個引數作為右側運算量,而左側運算量就是物件本身 而 >> 或<< 左側運算量是 cin或cout 而不是物件本身,所以不滿足後面一點,就只能申明為友元函數了 如果一定要宣告為成員函式,只能成為如下的形式:
C++類和物件.四個預設成員函式(賦值運算子過載)
1.(1)類的定義 類就是具有相同資料和相同操作的一組物件的集合。 學生類定義: class student {//成員變數char* name;int age;int sex;//成員函式void speak(){cout<<name<<"年
話運算子過載和友元函式
運算子過載的意義是:將常見的運算子重載出其他的含義:比如將*重載出指標的含義,將<<與cout聯合使用重載出輸出的含義,但需要認識到的問題是:運算子的過載:本質仍然是成員函式,即你可以認為:發生運算子過載時,實際上,是呼叫了成員函式,只不過重新換了個名字,叫運算子過載。 友元函式的意義:使得我們
C++ 運算子過載 運算子屬於左邊的
class A { public: int a; A operator+(const A &a) { A res; res.a = this->a+a.a; return res; } }; int main() { A a1,a2; a1.a = 1;