พิจารณาคลาสต่อไปนี้:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
เพื่อนร่วมงานของฉันมักจะนิยามเช่นนี้:
class Person:
name = None
age = None
def __init__(self, name, age):
self.name = name
self.age = age
เหตุผลหลักสำหรับสิ่งนี้คือตัวเลือกที่แก้ไขจะแสดงคุณสมบัติของการเติมข้อความอัตโนมัติ
Noneส่วนตัวผมไม่ชอบหลังหนึ่งเพราะมันทำให้รู้สึกว่าชั้นมีคุณสมบัติเหล่านั้นตั้งค่าให้ไม่มี
อันไหนจะเป็นการฝึกฝนที่ดีกว่าและด้วยเหตุผลอะไร
__init__ให้การเติมข้อมูลอัตโนมัติเป็นต้นนอกจากนี้การใช้Noneป้องกัน IDE จะอนุมานชนิดที่ดีกว่าสำหรับแอตทริบิวต์ดังนั้นจึงควรใช้ค่าเริ่มต้นที่สมเหตุสมผลแทน (เมื่อ เป็นไปได้)
typingโมดูลที่ช่วยให้คุณที่จะให้คำแนะนำกับ IDE และ linter ถ้าเรียงลำดับของสิ่งที่ tickles จินตนาการของคุณ ...
selfพวกเขาไม่มีผลกระทบต่อ แม้ว่าself.nameหรือself.ageไม่ได้รับมอบหมายใน__init__พวกเขาจะไม่ปรากฏในตัวอย่างselfพวกเขาจะปรากฏในชั้นเรียนPersonเท่านั้น