ฉันกำลังพยายามแบ่งชั้นเรียนขนาดใหญ่ของฉันออกเป็นสองชั้น โดยพื้นฐานแล้วจะอยู่ในคลาส "หลัก" และมิกซ์อินที่มีฟังก์ชันเพิ่มเติมดังนี้:
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
อาจจะ)?