Python 關於類函式設計的一點總結

2022-06-29 08:45:09 字數 2378 閱讀 9106

關於類函式設計的一點總結

by:授客qq:

1033553122

#!/usr/bin/env python

#-*-encoding:utf-8-*-

__author__ = 'shouke'

import os

class mytestclass:

def __init__(self):

self.file_list_for_dirpath =

# 獲取指定目錄下的檔案

def get_files_in_dirpath(self, dirpath):

if not os.path.exists(dirpath):

print('路徑:

%s不存在,退出程式

' % dirpath)

exit()

for name in os.listdir(dirpath):

full_path = os.path.join(dirpath, name)

if os.path.isdir(full_path):

self.get_files_in_dirpath(full_path)

else:

def get_file_list_for_dirpath(self):

return self.file_list_for_dirpath

obj  = mytestclass()

obj.get_files_in_dirpath('e:\mygit\autotestplatform/uiautotest')

print(obj.get_file_list_for_dirpath())

執行結果:

說明:如上,

get_files_in_dirpath

函式目的是為了獲取指定目錄下的檔案,按常理是函式中定義個變數,存放結果,最後直接

return

這個變數就可以了,但是因為涉及子目錄的遍歷,

函式中通過

self.get_files_in_dirpath

對函式進行再次呼叫,

這樣一來,便無法通過簡單的

return方式返回結果了。

個人覺得比較不合理的方式就是按上面的,

「強行」在類中定義個類屬性來存放這個結果,然後再定義個函式,返回這個結果,感覺這樣設計不太好,還會增加**邏輯的模糊度。

那咋辦?個人覺得比較合理的解決方案,可以使用巢狀函式。如下:

#!/usr/bin/env python

#-*-encoding:utf-8-*-

__author__ = 'shouke'

import os

class mytestclass:

def __init__(self):

pass

# 獲取指定目錄下的檔案

def get_files_in_dirpath(self, dirpath):

file_list_for_dirpath =

def collect_files_in_dirpath(dirpath):

nonlocal file_list_for_dirpath

if not os.path.exists(dirpath):

print('路徑:

%s不存在,退出程式

' % dirpath)

exit()

for name in os.listdir(dirpath):

full_path = os.path.join(dirpath, name)

if os.path.isdir(full_path):

collect_files_in_dirpath(full_path)

else:

collect_files_in_dirpath(dirpath)

return file_list_for_dirpath

obj  = mytestclass()

print(obj.get_files_in_dirpath('e:\mygit\autotestplatform/uiautotest'))

執行結果:

關於類庫函式設計中的一點哲學

在類庫中很多函式設計很巧妙,至今我還在體會他們的設計哲學是怎麼樣的,比如關於linkedlist的,裡面有乙個函式 public e getfirst 返回第乙個元素,如果之前我沒看過這段 的話,讓我自己寫的話,我可能會返回乙個null值,但類庫里是丟擲乙個異常。很多類庫的函式 比如remove操作...

關於python的類

class person def setname self,name self.name name def getname self return self.name def greet self print hello world my name is s self.name foo person...

Python 關於類和函式的常見問題

arg和 kwarg用法 args 可以理解為只有一列的 長度不固定 kwargs 可以理解為字典,長度也不固定 參考 python初學者筆記 五 白話講 arg和 kwarg,你看不懂算我笨!super init 繼承父類 python3.x 和 python2.x 的乙個區別是 python 3...