1、特殊方法和運算子過載
運算子過載:
'''
運算子過載
'''class
people
:def
__init__
(self,name)
: self.name = name
def__add__
(self, other):if
(isinstance
(other,people)):
return
"--"
.format
(self.name,other.name)
else
:print
("不是同類物件,不可進行相加。"
)def
__mul__
(self,other):if
(isinstance
(other,
int)):
return self.name*other
else
:print
("不是同類物件,不可進行相乘。"
)p1 = people(
"任嘉倫"
)p2 = people(
"嘉人"
)print
((p1+p2)*3
)
執行結果:
任嘉倫-
-嘉人任嘉倫-
-嘉人任嘉倫-
-嘉人
2、特殊屬性
其中obj是普通的物件,class是類,例如:
class
c: pass
c = c(
)
上面的**中c是物件,其擁有的屬性是前兩個,c是類,其擁有的屬性是後4個。
3、物件的淺拷貝和深拷貝
'''
1、淺拷貝
python 拷貝一般都是淺拷貝。拷貝時,物件包含的子物件內容不拷貝。因此,源物件和拷貝物件會引用同乙個子物件。
2、深拷貝
使用 copy 模組的 deepcopy 函式,遞迴拷貝物件中包含的子物件。源物件和拷貝物件所有的子物件也不同。
3、變數的賦值操作
只是形成兩個變數,實際還是指向同乙個物件。
'''import copy
class
mobilephone
:def
__init__
(self,cpu,screen)
: self.cpu = cpu
self.screen = screen
class
cpu:
defcaculate
(self)
:print
("使用cpu進行計算。"
)class
screen
:def
show
(self)
:print
("顯示一幅美麗的畫。"
)#測試變數的賦值
c1 = cpu(
)c2 = c1
print
("測試變數賦值~~"
)print
("c1:"
,c1)
print
("c2:"
,c2)
s = screen(
)c = cpu(
)#測試淺拷貝
m1 = mobilephone(c,s)
m2 = copy.copy(m1)
print
("測試淺拷貝~~"
)print
("m1: --"
.format
(m1,m1.cpu,m1.screen)
)print
("m2: --"
.format
(m2,m2.cpu,m2.screen)
)#測試深拷貝
m3 = mobilephone(c,s)
m4 = copy.deepcopy(m3)
print
("測試深拷貝~~"
)print
("m3: --"
.format
(m3,m3.cpu,m3.screen)
)print
("m4: --"
.format
(m4,m4.cpu,m4.screen)
)
執行結果:
測試變數賦值~
~c1:
<__main__.cpu object at>
>
c2:<__main__.cpu object at>
>
測試淺拷貝~
~m1:
<__main__.mobilephone object at>
>
-<__main__.cpu object at>
>
-<__main__.screen object at>
>
m2:<__main__.mobilephone object at>
>
-<__main__.cpu object at>
>
-<__main__.screen object at>
>
測試深拷貝~
~m3:
<__main__.mobilephone object at>
>
-<__main__.cpu object at>
>
-<__main__.screen object at>
>
m4:<__main__.mobilephone object at>
>
-<__main__.cpu object at>
>
-<__main__.screen object at>
>
4、組合
'''
1、「is-a」關係,我們可以使用「繼承」。從而實現子類擁有的父類的方法和屬性。
「is-a」關係指的是類似這樣的關係:狗是動物,dog is animal。狗類就應該繼承動
物類。2、「has-a」關係,我們可以使用「組合」,也能實現乙個類擁有另乙個類的方法和
屬性。「has-a」關係指的是這樣的關係:手機擁有 cpu。 mobilephone has a cpu。
'''#繼承
classa1:
defsay
(self)
:print
("a1 a1 a1"
)class
b1(a1)
:pass
bb1 = b1(
)print
("繼承~~"
)bb1.say(
)#組合
classa2:
def__init__
(self,a)
: self.a = a
classb2:
defsay
(self)
:print
("b2 b2 b2"
)print
("組合~~"
)bb2 = b2(
)aa = a2(bb2)
aa.a.say(
)
執行結果:
繼承~
~a1 a1 a1
組合~~
b2 b2 b2
python零碎知識點 2019 08 16
近來在復現meta sr,寫這系列總結相當於備忘錄,記錄每天遇到的一些python語法知識點,為方便日後不斷複習 小白在成長 a如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。w開啟乙個檔案只用於寫入。如果該檔案已存在則...
python零碎知識點 2019 8 19
乙個元素張量可以用item 得到元素值,請注意這裡的print x 和print x.item 值是不一樣的,乙個是列印張量,乙個是列印元素 x torch.randn 2,2 print x 1,1 print x 1,1 item 結果 tensor 0.4279 0.4278833866119...
零碎知識點
1.反斜槓也可拼接字串 window.nl ad function window.nl ad function 2.在console.log 中新增樣式 var a hello console.log c a,font size 400 background blue color white 3 通...