我在这样的课程中有一个课程:
class Robot(object):
def __init__(self):
self.name = 'ganken'
class Speaker(object):
pass
假设我要从发言人访问Robot.name
,该怎么做
答案 0 :(得分:1)
您可以将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'
答案 1 :(得分:1)
如果您正在寻找嵌套类解决方案,则可以尝试以下方法在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())
答案 2 :(得分:0)
请尝试以下操作:
print(Robot().name)
先调用它然后访问它
输出为:
ganken