Python 这个内部类用法正确吗?
我试图理解内部类的逻辑,如果用法不正确,应该怎么做Python 这个内部类用法正确吗?,python,Python,我试图理解内部类的逻辑,如果用法不正确,应该怎么做 我的意思是,在外部类中使用laptop参数是正确的方法还是应该在内部类中使用?是否有特殊原因需要laptop成为Student的内部类,而不是它自己的外部类?通常,内部类表示依赖于外部类的子数据结构(例如,链接列表中的节点),而不是可以独立存在的独立数据结构。当然,我看不出有任何错误。如果笔记本电脑仅用于学生,则无所谓。如果笔记本电脑是它自己的实体,有一天在没有学生的情况下可以使用,那么可能不会。但在Python中嵌套类实际上只是一种名称空间和
我的意思是,在外部类中使用laptop参数是正确的方法还是应该在内部类中使用?是否有特殊原因需要
laptop
成为Student
的内部类,而不是它自己的外部类?通常,内部类表示依赖于外部类的子数据结构(例如,链接列表中的节点
),而不是可以独立存在的独立数据结构。当然,我看不出有任何错误。如果笔记本电脑
仅用于学生
,则无所谓。如果笔记本电脑
是它自己的实体,有一天在没有学生
的情况下可以使用,那么可能不会。但在Python中嵌套类实际上只是一种名称空间和组织技术;它对语义没有真正的影响,除了你如何引用事物。您可能也会发现有帮助(尽管避免第一个答案;出于某种原因,这是一个关于Python问题的Java答案),而且,由于您询问正确性,因此值得注意的是(对于大多数Python程序员来说)建议函数名使用snake\u case
,而不是PascalCase
,而不是AddRam
(后者更像是一个C#约定)。@GreenCoveGuy我想让笔记本电脑与每个学生联系起来,有没有其他方法可以做到这一点,还是没有必要呢?我个人只想让Laptop
成为一个普通的顶级类。你可以在student
的同一个文件中定义它(Python对文件中出现的类数量没有限制)。嵌套类实际上适用于内部类没有外部类就没有意义的情况。GreenCoveGuy的节点示例很好,因为节点
在其所在的数据结构之外永远不会有用,而笔记本电脑
如果没有学生
(也许它属于一位讲师,或者它还没有被卖掉,就在某个地方的架子上)
class Student:
def __init__(self, name, no, laptop):
self.name = name
self.no = no
self.laptop = laptop
class Laptop:
def __init__(self, brand, cpu, ram):
self.brand = brand
self.cpu = cpu
self.ram = ram
def AddRam(self):
self.ram += 16
s1 = Student("John Doe", 41,Student.Laptop("Asus","I7 10950H",16))
print(s1.name)
print(s1.laptop.brand, s1.laptop.cpu, s1.laptop.ram)
s1.laptop.AddRam()
print(s1.laptop.brand, s1.laptop.cpu, s1.laptop.ram)