พิจารณาคลาสต่อไปนี้:
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
เท่านั้น