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

27
ข้อผิดพลาดร้ายแรง: Python.h: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
ฉันพยายามสร้างไลบรารี่ที่แชร์โดยใช้ไฟล์นามสกุล C แต่ก่อนอื่นฉันต้องสร้างไฟล์เอาต์พุตโดยใช้คำสั่งด้านล่าง: gcc -Wall utilsmodule.c -o Utilc หลังจากรันคำสั่งฉันได้รับข้อความแสดงข้อผิดพลาดนี้: utilsmodule.c: 1: 20: ข้อผิดพลาดร้ายแรง: Python.h: ไม่มีการยกเลิกการรวบรวมไฟล์หรือไดเรกทอรีดังกล่าว ฉันได้ลองวิธีแก้ปัญหาที่แนะนำทั้งหมดทางอินเทอร์เน็ต แต่ปัญหายังคงมีอยู่ Python.hฉันมีปัญหากับไม่มี ฉันจัดการเพื่อค้นหาไฟล์บนเครื่องของฉัน
1191 python  gcc  python-c-api 

5
Python (และ Python C API): __new__ เทียบกับ __init__
คำถามที่ฉันกำลังจะถามดูเหมือนจะซ้ำกันกับการใช้ __new__ และ __init__ของPython? แต่อย่างไรก็ตามก็ยังไม่ชัดเจนสำหรับฉันว่าความแตกต่างในทางปฏิบัติระหว่าง__new__และ__init__คืออะไร ก่อนที่คุณจะรีบบอกฉันว่า__new__มีไว้สำหรับสร้างวัตถุและ__init__มีไว้สำหรับการเริ่มต้นอ็อบเจ็กต์ขอฉันพูดให้ชัดเจน: ฉันเข้าใจ ในความเป็นจริงความแตกต่างนั้นค่อนข้างเป็นธรรมชาติสำหรับฉันเนื่องจากฉันมีประสบการณ์ใน C ++ ที่เรามีการจัดวางใหม่ซึ่งแยกการจัดสรรอ็อบเจ็กต์ออกจากการเริ่มต้นในทำนองเดียวกัน หลาม C API กวดวิชาอธิบายเช่นนี้ สมาชิกใหม่มีหน้าที่สร้างอ็อบเจ็กต์ประเภท (ซึ่งตรงข้ามกับการกำหนดค่าเริ่มต้น) มันถูกเปิดเผยใน Python เป็น__new__()วิธีการ ... เหตุผลหนึ่งที่จะใช้วิธีการใหม่เพื่อให้มั่นใจค่าเริ่มต้นของตัวแปรเช่น ใช่แล้ว - ฉันได้อะไร__new__แต่ถึงอย่างนั้นฉันก็ยังไม่เข้าใจว่าทำไมมันถึงมีประโยชน์ใน Python ตัวอย่างที่ระบุบอกว่า__new__อาจมีประโยชน์หากคุณต้องการ "รับรองค่าเริ่มต้นของตัวแปรอินสแตนซ์" ก็ใช่ว่า__init__จะทำอะไร? ในบทช่วยสอน C API ตัวอย่างจะแสดงที่สร้าง Type ใหม่ (เรียกว่า "Noddy") และกำหนด__new__ฟังก์ชันของ Type ประเภท Noddy ประกอบด้วยสมาชิกสตริงที่เรียกว่าfirstและสมาชิกสตริงนี้เริ่มต้นเป็นสตริงว่างดังนี้: static PyObject * Noddy_new(PyTypeObject *type, PyObject *args, PyObject …
127 python  c  python-c-api 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.