คำถามติดแท็ก python

Python เป็นภาษาการเขียนโปรแกรมตีความระดับสูงแบบไดนามิก การออกแบบมุ่งเน้นไปที่ไวยากรณ์ที่ชัดเจนวิธีการเขียนโปรแกรมเชิงวัตถุและวิธีที่ถูกต้องในการทำสิ่งที่ชัดเจน Python สนับสนุนโมดูลและข้อยกเว้นและมีไลบรารีโมดูลมาตรฐานมากมาย Python มีวัตถุประสงค์ทั่วไปและใช้กันอย่างแพร่หลายตั้งแต่เว็บไปจนถึงระบบฝังตัว

4
สไตล์โค้ดที่ดีในการแนะนำการตรวจสอบข้อมูลทุกที่?
ฉันมีโครงการที่มีขนาดใหญ่พอที่ฉันไม่สามารถเก็บทุกแง่มุมไว้ในหัวของฉันได้อีก ฉันกำลังจัดการกับคลาสและฟังก์ชั่นจำนวนมากในนั้นและฉันกำลังส่งข้อมูลไปรอบ ๆ เมื่อเวลาผ่านไปฉันสังเกตว่าฉันยังคงได้รับข้อผิดพลาดอยู่เพราะฉันลืมว่ารูปแบบข้อมูลที่แม่นยำมีอะไรบ้างเมื่อฉันส่งมันไปยังฟังก์ชั่นที่แตกต่างกัน ( เช่นหนึ่งฟังก์ชั่นยอมรับและส่งออกอาเรย์ของสตริง ยอมรับสตริงที่ถูกเก็บไว้ในพจนานุกรม ฯลฯ ดังนั้นฉันจึงต้องเปลี่ยนสตริงที่ฉันทำงานด้วยจากการมีสตริงในอาร์เรย์เป็นสตริงในพจนานุกรม ) เพื่อหลีกเลี่ยงการต้องคิดออกว่าเกิดอะไรขึ้นฉันมักจะรักษาแต่ละฟังก์ชั่นและคลาสว่าเป็น "เอนทิตี้แยกตัว" ในแง่ที่ว่ามันไม่สามารถพึ่งพาโค้ดภายนอกที่ให้อินพุตที่ถูกต้องและต้องทำการตรวจสอบอินพุตเอง ในบางกรณีให้กำหนดข้อมูลใหม่หากข้อมูลได้รับในรูปแบบที่ไม่ถูกต้อง) สิ่งนี้ได้ลดเวลาที่ใช้ไปอย่างมากเพื่อให้แน่ใจว่าข้อมูลที่ฉันส่งไป "เหมาะกับ" ในทุกฟังก์ชั่นเพราะตอนนี้คลาสและฟังก์ชั่นของตัวเองเตือนฉันเมื่ออินพุตบางอย่างไม่ดี (และบางครั้งก็แก้ไขได้) ต้องใช้ดีบักเกอร์ผ่านโค้ดทั้งหมดอีกต่อไปเพื่อหาว่ามีอะไรเกิดขึ้นบ้าง อีกทางหนึ่งก็เพิ่มรหัสโดยรวมเช่นกัน คำถามของฉันคือถ้ารูปแบบรหัสนี้เหมาะสมสำหรับการแก้ปัญหานี้หรือไม่ แน่นอนทางออกที่ดีที่สุดคือการ refactor โครงการอย่างสมบูรณ์และตรวจสอบให้แน่ใจว่าข้อมูลมีโครงสร้างที่เหมือนกันสำหรับทุกฟังก์ชั่น - แต่เนื่องจากโครงการนี้เติบโตอย่างต่อเนื่องฉันจะจบลงด้วยการใช้จ่ายมากขึ้นและกังวลเกี่ยวกับรหัสสะอาด . (FYI: ฉันยังเป็นผู้เริ่มต้นดังนั้นโปรดแก้ตัวหากคำถามนี้ไร้เดียงสาโครงการของฉันอยู่ใน Python)

3
ตรวจสอบให้แน่ใจว่าไม่ได้ใช้รหัสที่ไม่ปลอดภัย
ฟังก์ชั่นf()ใช้eval()(หรือบางสิ่งที่อันตราย) กับข้อมูลที่ฉันสร้างและเก็บไว้ในlocal_fileเครื่องที่ใช้โปรแกรมของฉัน: import local_file def f(str_to_eval): # code.... # .... eval(str_to_eval) # .... # .... return None a = f(local_file.some_str) f() ปลอดภัยที่จะเรียกใช้เนื่องจากสตริงที่ฉันกำหนดให้เป็นของฉันเอง แต่ถ้าฉันเคยตัดสินใจที่จะใช้มันสำหรับบางสิ่งบางอย่างที่ไม่ปลอดภัย (เช่นผู้ใช้ป้อนข้อมูล) สิ่งที่จะไปผิดมหันต์ นอกจากนี้หากlocal_fileหยุดเป็นท้องถิ่นแล้วมันจะสร้างช่องโหว่เนื่องจากฉันจะต้องเชื่อถือเครื่องที่ให้ไฟล์นั้นเช่นกัน ฉันจะแน่ใจได้อย่างไรว่าฉันไม่เคย "ลืม" ว่าฟังก์ชั่นนี้ไม่ปลอดภัยที่จะใช้ (เว้นแต่ว่าตรงตามเกณฑ์ที่กำหนด) หมายเหตุ: eval()มีอันตรายและมักจะถูกแทนที่ด้วยสิ่งที่ปลอดภัย

2
การสืบทอดของ Python เป็นรูปแบบของ "is-a" ของการสืบทอดหรือสไตล์การแต่งหรือไม่?
เนื่องจาก Python อนุญาตให้ใช้การสืบทอดหลายแบบการถ่ายทอดทางพันธุกรรมใน Python มีลักษณะอย่างไร ในภาษาที่มีการสืบทอดเดียวเช่น Java การสืบทอดจะถูกใช้เมื่อคุณสามารถพูดได้ว่าวัตถุหนึ่ง "is-a" ของวัตถุอื่นและคุณต้องการแบ่งปันรหัสระหว่างวัตถุ (จากวัตถุหลักไปยังวัตถุลูก) ตัวอย่างเช่นคุณสามารถพูดได้ว่าDogเป็นAnimal: public class Animal {...} public class Dog extends Animal {...} แต่เนื่องจาก Python รองรับการสืบทอดหลายแบบเราจึงสามารถสร้างวัตถุโดยการรวมวัตถุอื่นเข้าด้วยกัน ลองพิจารณาตัวอย่างด้านล่าง: class UserService(object): def validate_credentials(self, username, password): # validate the user credentials are correct pass class LoggingService(object): def log_error(self, error): # log an error pass …

1
ฉันควร subclass ข้อยกเว้นใน Python เมื่อใด
ในรหัสของฉันมีประมาณเจ็ดแห่งที่ฉันแจ้งข้อยกเว้น ข้อยกเว้นเหล่านี้ทั้งหมดจะได้รับการปฏิบัติเช่นเดียวกัน: พิมพ์ข้อผิดพลาดไปยังล็อกไฟล์คืนสถานะซอฟต์แวร์กลับเป็นค่าเริ่มต้นและออก ในระหว่างการตรวจสอบรหัสวิศวกรอาวุโสของฉันซึ่งฉันให้ความสำคัญมากบอกว่าฉันควรคลาสย่อยทั้งหมดยกเว้น เหตุผลของเขาคือในอนาคตเราอาจต้องการจัดการกับข้อยกเว้นต่างกันและจะง่ายขึ้น ข้อโต้แย้งของฉันคือตอนนี้มันจะถ่วงโค้ดของเราเท่านั้นและเนื่องจากเราไม่รู้ว่าเราจะจัดการกับข้อยกเว้นต่างกันหรือไม่เราควรปล่อยให้รหัสย่อและถ้าเมื่อเวลามาแล้วเราควรจะพิมพ์ย่อย . ฉันต้องการฟังอาร์กิวเมนต์สำหรับแต่ละกรณี

4
ทำไมตัวสร้างไพ ธ อนและฟังก์ชั่นจึงใช้คำสั่ง“ def” ร่วมกัน?
พิจารณาสิ่งต่อไปนี้: def some_function(): return 1 def some_generator(): yield 1 ในรหัสข้างต้นsome_functionเป็นฟังก์ชั่นในขณะที่some_generatorเป็นเครื่องกำเนิดไฟฟ้า พวกมันดูคล้ายกันมาก ปัญหาที่ฉันมีเมื่ออ่านโค้ดคือฉันต้องสแกนผ่านทุกบรรทัดใน "ฟังก์ชั่น" เพื่อค้นหาyieldคำหลักก่อนที่ฉันจะสามารถตรวจสอบได้ว่ามันเป็นฟังก์ชั่นหรือเครื่องกำเนิดไฟฟ้าจริง ๆ ! สำหรับฉันดูเหมือนว่าการใช้คำหลักที่แตกต่างกันสำหรับเครื่องกำเนิดไฟฟ้าจะทำให้เข้าใจได้ง่ายขึ้นเช่น: gen some_generator(): yield 1 อะไรคือข้อดีของการใช้defคำหลักสำหรับเครื่องกำเนิดไฟฟ้าและฟังก์ชั่น? ทำไมคำหลักใหม่ไม่ได้ถูกนำมาใช้กับฟังก์ชั่นและเครื่องกำเนิดไฟฟ้าแยกกัน?

3
ควรจัดการลิงก์พึ่งพาส่วนตัวใน setup.py อย่างไร
ที่ทำงานเราใช้เซิร์ฟเวอร์ pypi ส่วนตัว เซิร์ฟเวอร์ pypi นี้มีการระบุไว้เป็นลิงค์พึ่งพา: ... from setuptools import setup config = ConfigParser.ConfigParser() rc = os.path.join(os.path.expanduser('~'), '.pypirc') config.read(rc) dependency_links = [ 'https://{}:{}@<private_url>'.format( config.get('dc', 'username'), config.get('dc', 'password'))] setup( dependency_links=dependency_links, ...) สิ่งนี้ใช้ได้ดีในกรณีส่วนใหญ่ของเรา อย่างไรก็ตามเมื่อไม่นานมานี้เราต้องติดตั้งแพ็คเกจบนเซิร์ฟเวอร์ลูกค้า สำหรับสิ่งนี้เราต้องคัดลอกที่ถูกต้อง.pypircก่อนที่เราจะสามารถติดตั้งแพ็คเกจใด ๆ รหัสข้างต้นก็รู้สึกเหมือนแฮ็คสกปรก วิธีที่เหมาะสมในการระบุลิงค์พึ่งพาอย่างปลอดภัยโดยไม่ต้องใช้ข้อมูลประจำตัว hardcoding คืออะไร?
10 python 

5
มีข้อ จำกัด ทางเทคนิคหรือคุณสมบัติภาษาที่ป้องกันไม่ให้สคริปต์ Python ของฉันเร็วเท่ากับโปรแกรม C ++ ที่เทียบเท่าหรือไม่
ฉันเป็นผู้ใช้ Python มาเป็นเวลานาน ไม่กี่ปีที่ผ่านมาฉันเริ่มเรียนรู้ C ++ เพื่อดูว่ามันสามารถให้อะไรในแง่ของความเร็ว ในช่วงเวลานี้ฉันจะใช้ Python เป็นเครื่องมือในการสร้างต้นแบบต่อไป ดูเหมือนว่านี่เป็นระบบที่ดี: การพัฒนาที่คล่องตัวด้วย Python การดำเนินการที่รวดเร็วใน C ++ เมื่อเร็ว ๆ นี้ฉันใช้ Python มากขึ้นอีกครั้งและเรียนรู้วิธีหลีกเลี่ยงข้อผิดพลาดและรูปแบบการต่อต้านทั้งหมดที่ฉันใช้อย่างรวดเร็วในปีก่อน ๆ กับภาษา ฉันเข้าใจว่าการใช้คุณสมบัติบางอย่าง (รายการความเข้าใจการแจกแจง ฯลฯ ) สามารถเพิ่มประสิทธิภาพได้ แต่มีข้อ จำกัด ทางเทคนิคหรือคุณสมบัติภาษาที่ป้องกันไม่ให้สคริปต์ Python ของฉันเร็วเท่ากับโปรแกรม C ++ ที่เทียบเท่ากันหรือไม่

3
วิธีซิงค์นาฬิกาผ่านเครือข่ายเพื่อการพัฒนาเกม
ฉันกำลังเขียนเกมที่มีหลายแง่มุมตามเวลา ฉันใช้เวลาเพื่อช่วยประเมินตำแหน่งผู้เล่นเมื่อเครือข่ายแผงลอยและแพ็กเก็ตไม่ผ่าน (และเวลาระหว่างการรับแพ็คเก็ตและไม่ได้) มันเป็นเกมประเภท Pacman ในแง่ที่ว่าผู้เล่นเลือกทิศทางและไม่สามารถหยุดเคลื่อนไหวได้ดังนั้นระบบจึงมีเหตุผล (หรืออย่างน้อยฉันก็คิดว่ามันเป็นอย่างนั้น) ดังนั้นฉันมีสองคำถาม: 1) ฉันจะซิงค์นาฬิกาของเกมตั้งแต่เริ่มต้นอย่างไรเนื่องจากเครือข่ายล่าช้า 2) ไม่เป็นไรหรือไม่ที่จะซิงค์พวกเขาและเพียงสมมติว่าพวกเขาเหมือนกัน (รหัสของฉันคือเขตเวลาอิสระ) ไม่ใช่เกมที่มีการแข่งขันสูงที่ผู้คนจะเปลี่ยนนาฬิกาเป็นโกง แต่ก็ยัง เกมกำลังเขียนโปรแกรมใน Java และ Python (การพัฒนาแบบขนานเป็นโครงการ)

1
การพิมพ์เป็ดการตรวจสอบข้อมูลและการเขียนโปรแกรมที่เหมาะสมใน Python
เกี่ยวกับการพิมพ์เป็ด : การพิมพ์เป็ดนั้นได้รับความช่วยเหลือจากการไม่ได้ทดสอบประเภทของข้อโต้แย้งในวิธีการและร่างกายโดยอาศัยเอกสารประกอบรหัสที่ชัดเจนและการทดสอบเพื่อให้แน่ใจว่าการใช้งานถูกต้อง เกี่ยวกับการตรวจสอบข้อโต้แย้ง (EAFP: ง่ายกว่าที่จะขอการอภัยมากกว่าการอนุญาต) ตัวอย่างที่ดัดแปลงจากที่นี่ : ... มันเป็นสิ่งที่ต้องทำยิ่งกว่า: def my_method(self, key): try: value = self.a_dict[member] except TypeError: # do something else ซึ่งหมายความว่าทุกคนที่ใช้รหัสของคุณไม่จำเป็นต้องใช้พจนานุกรมจริงหรือคลาสย่อย - พวกเขาสามารถใช้วัตถุใด ๆ ที่ใช้อินเทอร์เฟซการแมป น่าเสียดายในทางปฏิบัติมันไม่ง่ายอย่างนั้น ถ้าสมาชิกในตัวอย่างด้านบนอาจเป็นจำนวนเต็ม จำนวนเต็มไม่เปลี่ยนรูปดังนั้นจึงเหมาะสมอย่างยิ่งที่จะใช้เป็นคีย์พจนานุกรม อย่างไรก็ตามพวกมันยังใช้เพื่อจัดทำดัชนีวัตถุประเภทลำดับ หากสมาชิกเกิดขึ้นเป็นจำนวนเต็มตัวอย่างที่สองสามารถผ่านรายการและสตริงเช่นเดียวกับพจนานุกรม เกี่ยวกับการเขียนโปรแกรมที่แน่วแน่ : การยืนยันเป็นวิธีที่เป็นระบบในการตรวจสอบว่าสถานะภายในของโปรแกรมเป็นไปตามที่โปรแกรมเมอร์คาดไว้โดยมีเป้าหมายในการจับข้อบกพร่อง โดยเฉพาะอย่างยิ่งพวกเขาดีสำหรับการจับสมมติฐานที่ผิดพลาดที่เกิดขึ้นในขณะที่เขียนรหัสหรือใช้อินเทอร์เฟซโดยโปรแกรมเมอร์อื่น นอกจากนี้พวกเขาสามารถทำหน้าที่เป็นเอกสารในบรรทัดบางส่วนโดยทำให้สมมติฐานของโปรแกรมเมอร์ชัดเจน ("ชัดเจนดีกว่าโดยนัย") แนวคิดที่กล่าวถึงบางครั้งมีข้อขัดแย้งดังนั้นฉันจึงพิจารณาปัจจัยต่อไปนี้เมื่อเลือกว่าฉันไม่ได้ทำการตรวจสอบความถูกต้องของข้อมูลเลยให้ทำการตรวจสอบความถูกต้องอย่างแรงหรือใช้การยืนยัน: การตรวจสอบที่แข็งแกร่ง โดยการตรวจสอบที่แข็งแกร่งฉันหมายถึงการเพิ่มข้อยกเว้นที่กำหนดเอง ( ApiErrorตัวอย่าง) หากฟังก์ชัน / เมธอดของฉันเป็นส่วนหนึ่งของ API สาธารณะจะเป็นการดีกว่าถ้าตรวจสอบอาร์กิวเมนต์เพื่อแสดงข้อความแสดงข้อผิดพลาดที่ดีเกี่ยวกับประเภทที่ไม่คาดคิด โดยการตรวจสอบประเภทที่ฉันไม่ได้หมายถึงการใช้เพียงอย่างเดียวisinstanceแต่ยังถ้าวัตถุผ่านการสนับสนุนอินเทอร์เฟซที่จำเป็น …

3
Python Multiprocessing กับ Queue กับ ZeroMQ IPC
ฉันไม่ว่างเขียนโปรแกรมประยุกต์ใช้งูหลามZeroMQและการดำเนินการการเปลี่ยนแปลงของรูปแบบ Majordomo ตามที่อธิบายไว้ในZGuide ฉันมีนายหน้าเป็นตัวกลางระหว่างชุดคนงานและลูกค้า ฉันต้องการบันทึกข้อมูลอย่างละเอียดสำหรับทุกคำขอที่เข้ามา แต่ฉันไม่ต้องการให้นายหน้าทำอย่างนั้นเสียเวลา นายหน้าควรส่งคำขอบันทึกข้อมูลนั้นไปยังอย่างอื่น ฉันคิดสองวิธี: - สร้างคนงานที่มีไว้สำหรับการเข้าสู่ระบบและใช้การขนส่ง ZeroMQ IPC เท่านั้น ใช้การประมวลผลหลายตัวพร้อมกับคิว ฉันไม่แน่ใจว่าอันไหนดีกว่าหรือเร็วกว่าสำหรับเรื่องนั้น ตัวเลือกแรกทำให้ฉันสามารถใช้คลาสพื้นฐานของผู้ปฏิบัติงานปัจจุบันที่ฉันใช้สำหรับผู้ปฏิบัติงานปกติอยู่แล้ว แต่ตัวเลือกที่สองดูเหมือนจะเร็วกว่าที่จะใช้ ฉันต้องการคำแนะนำหรือความเห็นด้านบนหรืออาจเป็นวิธีแก้ไขปัญหาอื่น

11
ฉันต้องเรียนรู้ html และ javascript เพื่อสร้างเว็บแอปพลิเคชันหรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเป็นโปรแกรมเมอร์ Java ที่มีประสบการณ์และฉันต้องการสร้างแอปพลิเคชันบนเว็บที่ซับซ้อนซึ่งต้องการหน้าแบบไดนามิกภาพวาดและอื่น ๆ (ยกตัวอย่างเช่น) ฉันต้องเรียนรู้ javascript / html เพื่อสร้างแอปพลิเคชันดังกล่าวหรือไม่? ไม่ใช่ว่าฉันไม่ต้องการที่จะเรียนรู้ภาษาอื่น (ฉันเคยทำมาก่อนแล้ว) แต่เทคโนโลยีในสภาพแวดล้อมแบบจาวาสคริปต์ดูเหมือนว่าจะเปลี่ยนแปลงเร็วมากเมื่อคุณเรียนรู้กรอบหนึ่งมันก็ล้าสมัยไปแล้ว ฉันได้ตรวจสอบจาวาเฟรมเวิร์กจำนวนหนึ่งสำหรับการพัฒนาเว็บไซต์ (spring, play) แต่ไม่ลึกมาก ดังนั้นกรอบเหล่านี้ (หรือกรอบจาวาอื่น ๆ ที่เป็นไปได้ที่ฉันไม่ทราบ) สามารถใช้ได้โดยไม่ต้องเรียนรู้ html / javascript หรือไม่ ฉันยังมีประสบการณ์หลาม ดังนั้นถ้าฉันสามารถทำแอพในหลามมันก็เป็นตัวเลือกเช่นกัน

1
แบบจำลองทางคณิตศาสตร์ของคลาส Python คืออะไร?
ฉันเข้าใจว่ารูปแบบคลาสสิคจากเอกสารแลมบ์ดานั้นไม่ถูกต้องสำหรับ Python และการปิดไม่ใช่รูปแบบทางคณิตศาสตร์ของการใช้งานระบบ Python แล้วมันเป็นรุ่นอะไร?
10 python 

1
สามารถแก้ไขโมดูล Python ในตัวได้หรือไม่
ขณะนี้ฉันเรียนรู้ Python และฉันเป็นจุดสำคัญในหนังสือเกี่ยวกับการใช้ห้องสมุดคณิตศาสตร์ ฉันดูเว็บไซต์ Python และสังเกตว่าห้องสมุดค่อนข้างหายากและฉันกำลังเขียนฟังก์ชันที่มีประโยชน์มากกว่านี้ ตัวอย่างเช่นฉันไปข้างหน้าและเขียนฟังก์ชันเพื่อหาค่าสัมประสิทธิ์และคืนค่ารากของสมการ เป็นฟังก์ชั่นสูตรสมการกำลังสอง ฉันสงสัยว่ามันเป็นไปได้ที่จะเพิ่มสิ่งนี้ไปยังห้องสมุดคณิตศาสตร์หลาม หากไม่เป็นเช่นนั้นฉันจะบันทึกได้อย่างไรฉันสามารถใช้ฟังก์ชั่นนั้นในโปรแกรม Python อื่น ๆ ที่ฉันเขียนเพียงแค่เรียกมัน

1
วิธีการสร้าง Python“ god class” ใหม่ได้อย่างไร
ปัญหา ฉันกำลังทำงานในโครงการงูหลามซึ่งชั้นเรียนหลักเป็น“ พระเจ้าวัตถุ ” เล็กน้อย นอกจากนี้เพื่อให้ friggin' หลายลักษณะและวิธีการ! ฉันต้องการปรับโครงสร้างห้องเรียนอีกครั้ง จนถึงตอนนี้ ... สำหรับขั้นตอนแรกฉันต้องการทำสิ่งที่ค่อนข้างง่าย แต่เมื่อฉันลองใช้วิธีที่ตรงไปตรงมาที่สุดมันก็ทำลายการทดสอบและตัวอย่างที่มีอยู่ โดยทั่วไปชั้นเรียนมีรายการคุณลักษณะที่ยาวมาก - แต่ฉันสามารถมองข้ามพวกเขาอย่างชัดเจนและคิดว่า“ คุณลักษณะทั้ง 5 นี้เกี่ยวข้องกัน… 8 สิ่งเหล่านี้สัมพันธ์กัน…แล้วก็มีส่วนที่เหลือ” getattr โดยทั่วไปฉันแค่ต้องการจัดกลุ่มคุณลักษณะที่เกี่ยวข้องลงในคลาสผู้ช่วยแบบ dict ฉันมีความรู้สึก__getattr__จะเหมาะสำหรับงาน ดังนั้นฉันจึงย้ายคุณสมบัติไปยังชั้นเรียนอื่นและแน่นอน__getattr__ใช้เวทย์มนตร์ของมันได้อย่างสมบูรณ์แบบดี ... ในตอนแรก แต่จากนั้นฉันลองใช้หนึ่งในตัวอย่าง คลาสย่อยตัวอย่างพยายามตั้งค่าหนึ่งในแอ็ตทริบิวต์เหล่านี้โดยตรง (ที่ระดับคลาส ) แต่เนื่องจากแอตทริบิวต์ไม่ได้“ อยู่ในสภาพร่างกาย” อีกต่อไปในชั้นผู้ปกครองฉันได้รับข้อผิดพลาดที่บอกว่าไม่มีแอตทริบิวต์ @property ฉันอ่านเกี่ยวกับ@propertyมัณฑนากร แต่ฉันก็อ่านด้วยว่ามันสร้างปัญหาให้กับคลาสย่อยที่ต้องการทำself.x = blahเมื่อxเป็นคุณสมบัติของคลาสพาเรนต์ ที่ต้องการอยากมี ให้รหัสลูกค้าทั้งหมดยังคงใช้งานได้ต่อไปself.whateverแม้ว่าwhateverคุณสมบัติของผู้ปกครองจะไม่“ อยู่ตามร่างกาย” ในคลาส (หรืออินสแตนซ์) เอง จัดกลุ่มแอตทริบิวต์ที่เกี่ยวข้องลงในคอนเทนเนอร์เหมือน dict ลดเสียงดังสุด ๆ …

2
การแคชแบบใช้คีย์ทำงานอย่างไร
ฉันเพิ่งอ่านบทความในบล็อก 37Signalsและฉันก็สงสัยว่าพวกเขาได้รับรหัสแคชอย่างไร ทุกอย่างดีและดีมีคีย์แคชที่มีการประทับเวลาของวัตถุ (ซึ่งหมายความว่าเมื่อคุณอัปเดตวัตถุแคชจะไม่ถูกต้อง) แต่คุณจะใช้แคชคีย์ในเทมเพลตได้อย่างไรโดยไม่ทำให้ DB มีผลกระทบต่อวัตถุที่คุณพยายามดึงข้อมูลจากแคช โดยเฉพาะสิ่งนี้มีผลต่อความสัมพันธ์แบบหนึ่งต่อหลายอย่างที่คุณแสดงความคิดเห็นของโพสต์อย่างไร ตัวอย่างใน Django: {% for comment in post.comments.all %} {% cache comment.pk comment.modified %} <p>{{ post.body }}</p> {% endcache %} {% endfor %} การแคชใน Rails นั้นแตกต่างจากการร้องขอเพื่อ memcached หรือไม่ (ฉันรู้ว่าพวกเขาแปลงแคชคีย์ของคุณเป็นอย่างอื่น) พวกเขายังแคชรหัสแคชหรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.