gpt4 book ai didi

python : Something unexpected is happening in my code. ...?

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:33 25 4
gpt4 key购买 nike

我正在自学 oop 概念。所以我的学生类里有一台内部类(class)笔记本电脑。我的学生类(class)保存学生信息,笔记本电脑类(class)保存他们的笔记本电脑配置。我通过学生对象(名称、rollno、品牌、cpu、ram)传递所有必需的参数。我有一种方法可以显示所有这些信息已通过。但是意想不到的事情正在发生..

class Student:
def __init__(self, name, rollno, brand, cpu, ram):
self.name = name
self.rollno = rollno
self.lap = self.Laptop(brand, cpu, ram)

def show(self):
print(self.name, self.rollno, self.lap.show())

class Laptop():
def __init__(self, brand, cpu, ram):
self.brand = brand
self.cpu = cpu
self.ram = ram

def show(self):
print(self.brand, self.cpu, self.ram)

s1 = Student('Mayank', '1654302036', 'H.P', 'i3', '4gb')
s1.show()

我的输出是..

H.P i3 4gb
Mayank 1654302036 None

我不明白为什么首先显示我的笔记本电脑的详细信息。

最佳答案

self.lap.show() 在调用 Student 中的 print 之前被评估(并调用 print 本身)。显示 开始。

通常,您不会在代码中使用“deep”print;而是返回一个 str,让 else 决定是否打印它。

class Student:
def __init__(self, name, rollno, brand, cpu, ram):
self.name = name
self.rollno = rollno
self.lap = self.Laptop(brand, cpu, ram)

def show(self):
return "%s %s %s" % (self.name, self.rollno, self.lap.show())

class Laptop():
def __init__(self, brand, cpu, ram):
self.brand = brand
self.cpu = cpu
self.ram = ram

def show(self):
return "%s %s %s" % (self.brand, self.cpu, self.ram)


s1 = Student('Mayank', '1654302036', 'H.P', 'i3', '4gb')
print(s1.show())

但是,如果您确实有充分的理由让 show 立即调用 print,请不要将 self.lap.show() 作为参数传递给 print。打印首先是学生信息,然后调用lap.show()

def show(self):
print(self.name, self.rollno)
self.lap.show()

关于 python : Something unexpected is happening in my code. ...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57442932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com