python之反射 選課例子

2022-09-16 09:27:11 字數 1958 閱讀 1129

在這個例子中用到了反射和列舉的用法,裡面有各種注意事項,是個不錯的練習題

total_couese_list =   # 把函式run中的變數當成全域性變數放在這裡

class course():

def __init__(self, name, price, period):

self.name = name

self.price = price

self.period = period

func_list = [,,,

]class student():

def __init__(self, name):

self.name = name

self.course =

def select_course(self, ):

"""選擇課程,已選則不能再選""" # 當選課的時候,把所選課程都羅列出來,同下面主函式中的列舉一樣

for i, iterm in enumerate(total_couese_list, 1): # 列舉傳引數,前面是可迭代物件,後面是序號,預設從幾開始

print(i, iterm.name, ) # 因為加入到列表中的是乙個物件,物件取值只能通過「.屬性」這種方法

num = input("請輸入你要選的課程")

num = num - 1

course_obj = total_couese_list[num]

if course_obj not in self.course:

def show_selectd_course(self):

"""檢視已選擇的課程"""

def del_selectd_course(self):

"""刪除已選擇的課程"""

def run():

"""主程式

1,根據course類建立10個課程

2,使用者輸入姓名,動態建立學生物件

3,檢視所選課程

4,為學生選課

5,刪除已選課程

:return:

"""# total_couese_list= #把total_couese_list當成全域性變數

for i in range(10):

obj = course('xx-%s' % i, 90, 90)

stu_name = input("請輸入學生姓名:") # 這兩個一起寫就可以實列化乙個物件,這本來沒有什麼了不起,

stu = student(stu_name) # 但是養成一種習慣就代表了一種思路

for key, iterm in enumerate(course.func_list, 1): # 列舉傳引數,前面是可迭代物件,後面是序號,預設從幾開始

print(key, iterm["text"]) # 拿到course中的字串,準備做反射

while true: #***while這個邏輯關係是寫在fun中的,whil要是頂格寫後面的例項stu就不能識別了,在這齣過錯,太坑了

num = int(input("請輸入要執行的功能序號:"))

num = num - 1

name = course.func_list[num]["name"] # 通過列舉的提示,在借助使用者的輸入和列舉關聯起來

print(name) # 現在的name值是取到的要執行的功能的名字,只是個字串而已

act1 = getattr(stu, name) # 通過反射取到student類中的對應方法,具體取哪個方法是使用者輸入序號,通過列舉關聯到字串取值的

print(act1()) # 上面取到的是乙個函式名

# 通過反射取到的類中的方法怎麼傳參?主要看反射取值的時候傳參是類還是物件,在就是縮排,縮排

#寫錯了,邏輯就亂了

act1()

if __name__ =="__main__":

run()

python選課系統 Python實戰 選課系統

一 需求分析 專案需求如下 角色 學校 學生 課程 講師要求 1.建立北京 上海 2 所學校 2.建立linux python go 3個課程 linuxpy在北京開,go在上海開 3.管理員建立學校 老師,課程 4.學校包含學校名稱,位址等屬性 5.學生註冊登入後,可以選擇學校,選擇課程,檢視成績...

Java反射例子

一 學生類 package com.enorth.bean title 學生 description 學生元件 company 秦金雷 version 1.0 public class student public void setstudentid int studentid public str...

Python之反射練習

什麼是反射?可以用字串的方式去訪問物件的屬性 class test name sss deffun self return helloword t test print hasattr t,name hasattr obj,name 檢視類裡面有沒有name屬性 print hasattr t,fu...