下面的代碼作業正常,我分別為外部和內部類創建物件并傳遞引數
class Student:
def __init__(self,name,rollno):
self.name = name
self.rollno = rollno
def show(self):
print(self.name,self.rollno)
#self.lap.show()
class Laptop: #inner class
def __init__(self,brand,cpu'):
self.brand = brand
self.cpu = cpu
def show(self):
print(self.brand,self.cpu)
s1 = Student('Ram',21)
lap1 =s1.Laptop('Dell','i3')
lap1.show()
在第二個代碼中,我在 Outer(Student) 類中創建了內部類(Laptop) 物件。在這種情況下,我們如何將引數傳遞給內部類?
class Student:
def __init__(self,name,rollno):
self.name = name
self.rollno = rollno
self.lap = self.Laptop() #lap is the obj of a inner class
def show(self):
print(self.name,self.rollno)
self.lap.show()
我嘗試使用 self.lap = self.Laptop(brand,cpu),分配引數并以不同的方式傳遞引數,但沒有一個對我有用。有什么方法可以傳遞引數嗎?
uj5u.com熱心網友回復:
我真的沒有看到內部類的額外好處。我見過很少的用例實際上有助于代碼的可讀性。在您的代碼中,我建議簡單地使用兩個“頂級”類。只有在某些復雜的情況下,內部類才真正有幫助。
class Student:
def __init__(self, name, rollno, laptop=None):
self.name = name
self.rollno = rollno
self.laptop = laptop
def show(self):
print(self.name, self.rollno)
if self.laptop:
self.laptop.show()
class Laptop:
def __init__(self, brand, cpu):
self.brand = brand
self.cpu = cpu
def show(self):
print(self.brand, self.cpu)
然后在使用中,只需初始化并根據需要傳遞它們:
lap1 = Laptop('Dell', 'i3')
s1 = Student('Ram', 21, lap1)
lap1.show()
s1.show()
s2 = Student('Stackoverflow', 9999, lap1)
s2.show()
s3 = Student('No laptop', 2)
s3.show()
uj5u.com熱心網友回復:
如果您真的希望 Laptop 類包含在 Student 類中,請將引數傳遞給 Student 建構式或替換self.lap = self.Laptop()為self.lap = None. 這樣您就無需在創建學生時擔心這些引數,并且可以稍后將筆記本電腦分配給學生,就像在第一個示例中一樣。
class Student:
def __init__(self,name,rollno):
self.name = name
self.rollno = rollno
self.lap = None #lap is the obj of a inner class
def show(self):
print(self.name,self.rollno)
self.lap.show()
class Laptop: #inner class
def __init__(self,brand,cpu):
self.brand = brand
self.cpu = cpu
def show(self):
print(self.brand,self.cpu)
s1 = Student('Ram',21)
lap1 =s1.Laptop('Dell','i3')
lap1.show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/405419.html
標籤:
上一篇:在“guildMemberAdd”處理程式中按名稱獲取角色
下一篇:受推送影響的建構式中的陣列參考
