[英]python accessing variable of high level from lower level class
我在這樣的班級中有一個班級:
class Robot(object):
def __init__(self):
self.name = 'ganken'
class Speaker(object):
pass
假設我想從 Speaker 訪問Robot.name
,我該怎么做
您可以使Speaker
成為Robot
的子類:
class Robot(object):
def __init__(self):
self.name = 'ganken'
class Speaker(Robot):
def get_name(self):
return self.name
當您創建Speaker
的實例時,它現在將具有與之關聯的名稱 ganken。
s = Speaker
s.get_name()
輸出:
'ganken'
您也可以調用s.name
並且它仍然會返回'ganken'
,但通常您希望在類中定義函數來獲取和設置類的不同屬性(如果需要更多信息,請查找 getter 和 setter)。
我可能誤解了你的問題。 如果要訪問 Speaker 類中 Robot 類實例的名稱(並且不一定要使 Speaker 成為 Robot 的子類),則可以將類定義為:
class Robot(object):
def __init__(self):
self.name = 'ganken'
class Speaker(object):
def get_robot_name(self, robot):
return robot.name
請注意,在此示例中,您可以將機器人實例傳遞給get_robot_name
函數。
演示:
r = Robot()
s = Speaker()
s.get_robot_name(r)
'ganken'
如果您正在尋找嵌套類解決方案,您可以嘗試以下方法,在 Robot 類中創建揚聲器對象。 但我不知道你這樣做的原因是什么。
試試這個假設Python3環境:
class Robot(object):
def __init__(self):
self.name = 'ganken'
self.speaker = self.createSpeaker()
def createSpeaker(self):
return Robot.Speaker(self)
class Speaker:
def __init__(self,robot):
self.robot = robot
def say_name(self):
return f'Name: {self.robot.name}'
robot = Robot()
print(robot.speaker.say_name())
試試下面的:
print(Robot().name)
只需調用它然后訪問它
輸出是:
ganken
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.