物件導向(二)

2021-08-11 04:08:52 字數 2270 閱讀 6017

在類中屬性前加上雙下滑線就是私有化的屬性了,不能在類外直接通過類名呼叫

class

dog:

__role = 'dog'

d = dog

()print(dog.__role)

報錯!

我們可以用__dict__看看dog中有那些屬性看看__role變成了什麼

class

dog:

__role = 'dog'

print(dog.__dict__)

我們可以看到__role屬性變成了_dog__role

當我們用_dog__role呼叫看看

class

dog:

__role = 'dog'

print(dog._dog__role)

dog

我們可以看到role可以被呼叫了。所以在python中絕對的私有化是沒有的我們總能想到方法呼叫。

python中的私有化我感覺可以這麼理解當你的在變數名前新增了雙下劃線就等於把變數名改為了_當前類名__屬性名

裝飾器

可以將類中的方法偽裝成乙個屬性

用法如下

from math import pi

class

cricle:

def__init__

(self, r):

self.r = r

defperimeter

(self):

return

2 * pi * self.r

defsqare

(self):

return pi * self.r ** 2

在上述的**中我們定義了乙個圓類我們可以例項化乙個圓,每次我們想要得到其周長和面積是我們都可以呼叫他們的方法,但是我們可以這麼認為面積和周長是圓的固有屬性而不是方法,我們怎麼樣可以跟呼叫屬性一樣呼叫方法呢,python還是厲害.有個property的裝飾器可以用到

from math import pi

class

cricle:

def__init__

(self, r):

self.r = r

@property

defperimeter

(self):

return

2 * pi * self.r

@property

defsqare

(self):

return pi * self.r ** 2

現在我們可以直接跟呼叫屬性一樣呼叫方法了

c1 =cricle(5)

print(c1.perimeter)

輸出:31.41592653589793

class

goods:

__discount = 0.8

def__init__(self, name, price)

self.name = name

self.__price = price

@property

defprice(self):

return

self.__price * __discount

@price.setter

defprice(self, new_price):

self.__price = new_price

@price.deleter

defprice(self):

print('刪除了')

輸出結果:

4.06.4

刪除了!

nb!

class

goods:

__discount = 0.8

@classmethod

defmodify_discount

(cls, new_discount):

goods.__discount = new_discount

靜態方法和普通方法沒什麼大的區別

class

a:@staticmethod

deffunc

(args):

# 靜態方法

print('123')

a.func(args)

可以通過類名直接帶呼叫。

物件導向(二)

物件導向的特徵之三 多型 多型機制 是物件導向程式設計的乙個重要特徵 多型的特點 是採用同名的方式,根據呼叫方法時傳送的引數的多少以及傳送引數型別的不同,呼叫不同的方法,這樣對於類的編制而言,可以採用同樣的方法獲得不同的行為特徵 多型性可以分為 編譯時多型 和執行時多型 編譯時多型 表現為方法名相同...

物件導向 二

多型 polymorphic 概述 事物存在的多種形態.1,事物存在的多種形態.2,要有方法重寫 3,要有父類引用指向子類物件.3,要有父類引用指向子類物件.重寫的注意事項 b 子類重寫父類方法時,訪問許可權不能更低 重寫的例子 public class base void test byte b ...

物件導向(二)

1.構造方法與set 的區別 前者給屬性進行初始化,後者可以修改屬性值 開發常用,因為靈活 2.static關鍵字的特點 1 隨類的載入而載入 2 優先於物件而存在 3 被類的所有物件共享 如 乙個班的同學共享乙個班級 4 可以通過類名呼叫。3.靜態變數與成員變數的區別 4.塊 用 括起來的 1 區...