屬性原理 封裝 類的呼叫

2021-10-25 02:05:59 字數 2975 閱讀 4038

. 屬性原理:

​ 本質:讀取和寫入函式

​ 價值:攔截

​ (1)呼叫函式

​ (2)繫結下面函式

​ (3)返回值給函式名賦值

# 問題:限制資料有效範圍

class wife:

def __init__(self, age):

# 因為先建立的類變數,所以本行**操作的是類變數

self.age = age

# 負責讀取資料 的過程(驗證/修改)

def get_age(self):

# 操作私有變數

return self.__age

# 負責寫入資料 的過程(驗證/修改)

def set_age(self, value):

self.__age = value

# 建立類變數與例項變數同名

# 建立屬性物件 + 繫結讀取函式

age = property(get_age)

# 繫結寫入函式(需要重新給變數age賦值)

age = age.setter(set_age)

print(age)

w01 = wife(30)

w01.age = 40

print(w01.age)

. 屬性各種寫法:讀寫、唯讀、只寫

# 1. 讀寫屬性

# 快捷鍵:props + 回車

class myclass:

def __init__(self, data=0):

self.__data = data

@property

def data(self):

return self.__data

@data.setter

def data(self, value):

self.__data = value

m01 = myclass(10)

m01.data = 20

print(m01.data) # 20

# 2. 唯讀屬性

# 快捷鍵:prop + 回車

# 適用性:通常類中確定的資料,只給類外讀取時使用.

class myclass:

def __init__(self):

self.__data = 10

@property

def data(self):

return self.__data

m01 = myclass()

# m01.data = 20 # 不能修改

print(m01.data) # 10

# 3. 只寫屬性

# 快捷鍵:無

class myclass:

def __init__(self, data=0):

self.data = data

# 建立屬性物件

data = property()

@data.setter

def data(self, value):

self.__data = value

m01 = myclass(10)

m01.data = 20

# print(m01.data) # 不能讀取

print(m01.__dict__)

. 封裝設計思想:分而治之、變則疏之

原則:類和類行為不同、物件和物件則資料不同

需求:老張開車去東北

​ 老張——>開車(去)

​ 車 ——>車類(行駛)

# 跨類呼叫1

# 語法:直接建立物件

# 語義:人去東北建立新車

class person:

def __init__(self, name=""):

self.name = name

def go_to(self, pos):

print("去", pos)

car = car()

car.run()

class car:

def run(self):

print("汽車在行駛")

# 使用物件區分資料不同

lz = person("老張")

ll = person("老李")

ls = person("老孫")

lz.go_to("東北")

. 跨類呼叫(2):

​ 語法:在建構函式中建立物件

​ 語義:老張開自己的車去東北

​ 缺點:人類和車類緊耦合

class person:

def __init__(self, name=""):

self.name = name

self.__car = car()

def go_to(self, pos):

print("去", pos)

self.__car.run()

class car:

def run(self):

print("汽車在行駛")

lz = person("老張")

lz.go_to("東北")

. 跨類呼叫(3):

​ 語法:通過引數傳遞物件

​ 語義:老張用根據自己需求的交通工具去東北

class person:

def __init__(self, name=""):

self.name = name

def go_to(self, car, pos):

print("去", pos)

car.run()

class car:

def run(self):

print("汽車在行駛")

lz = person("老張")

car = car()

lz.go_to(car, "東北")

多個類的DLL封裝及呼叫

cpp view plain copy define facelibdll include stdafx.h include facedll.h include 標頭檔案中函式的實現 facerecognizer facerecognizer facerecognizer facerecognize...

方法封裝,屬性呼叫以及設定。

package oop lianxi public class student 這是乙個無參構造方法 public student int age,string name 這是乙個有參構造方法 public int getage public string getname getage getnam...

實體類的屬性使用封裝類的好處

以integer 和 int 為例進行對比 1.如果成員變數的intvalue還未確定,用integer的話,只須令這個成員為null 但如果用int的話,就必然存在問題,因為乙個int成員變數的值總是確定的,即使你沒給它賦任何值,它的值就是0 2.對乙個物件運用反射機制時,比如setpropert...