ฉันกำลังพยายามแบ่งชั้นเรียนขนาดใหญ่ของฉันออกเป็นสองชั้น โดยพื้นฐานแล้วจะอยู่ในคลาส "หลัก" และมิกซ์อินที่มีฟังก์ชันเพิ่มเติมดังนี้:
main.py ไฟล์:
import mymixin.py
class Main(object, MyMixin):
def func1(self, xxx):
...
mymixin.py ไฟล์:
class MyMixin(object):
def func2(self: Main, xxx): # <--- note the type hint
...
ขณะนี้ใช้งานได้ดี แต่MyMixin.func2แน่นอนว่าคำใบ้ประเภทไม่สามารถใช้งานได้ ฉันไม่สามารถนำเข้าได้main.pyเนื่องจากฉันได้รับการนำเข้าแบบวนรอบและหากไม่มีคำใบ้ตัวแก้ไขของฉัน (PyCharm) ไม่สามารถบอกได้ว่าselfคืออะไร
ฉันใช้ Python 3.4 และยินดีที่จะย้ายไปที่ 3.5 หากมีวิธีแก้ปัญหา
มีวิธีใดบ้างที่ฉันสามารถแบ่งคลาสของฉันออกเป็นสองไฟล์และเก็บ "การเชื่อมต่อ" ทั้งหมดไว้เพื่อให้ IDE ของฉันยังคงเสนอการเติมข้อมูลอัตโนมัติให้ฉันและสินค้าอื่น ๆ ทั้งหมดที่มาจากคลาสนั้นรู้ประเภทหรือไม่
selfเนื่องจากมันจะเป็นคลาสย่อยของคลาสปัจจุบันเสมอ (และระบบตรวจสอบประเภทใด ๆ ก็ควรจะสามารถคิดได้ด้วยตัวเอง) มีการfunc2พยายามที่จะเรียกfunc1ที่ไม่ได้กำหนดไว้ในMyMixin? บางทีมันควรจะเป็น (abstractmethodอาจจะ)?