Python 如何定义从其他类返回属性的方法
在我的程序中,我有以下问题。如何在类“Mouse”、“Keyboard”和“Screen”中定义一个方法,以便它们返回房间和它们所属的计算机+类的关联属性(因此对于Keyboard类,这将是:'计算机{}位于房间{}中,并且具有{}语言')有人能告诉我如何在不改变程序本身的情况下为这3个类定义这样的方法吗?应该为每个分离的类定义方法。确切的任务是“扩展MAU、screen和tastatur的输出,以便用户知道它们属于哪个房间的计算机” 我尝试定义以下方法:Python 如何定义从其他类返回属性的方法,python,oop,inheritance,methods,attributes,Python,Oop,Inheritance,Methods,Attributes,在我的程序中,我有以下问题。如何在类“Mouse”、“Keyboard”和“Screen”中定义一个方法,以便它们返回房间和它们所属的计算机+类的关联属性(因此对于Keyboard类,这将是:'计算机{}位于房间{}中,并且具有{}语言')有人能告诉我如何在不改变程序本身的情况下为这3个类定义这样的方法吗?应该为每个分离的类定义方法。确切的任务是“扩展MAU、screen和tastatur的输出,以便用户知道它们属于哪个房间的计算机” 我尝试定义以下方法: def as_text(self):
def as_text(self):
return "{} an {} in {}".format(self.__name, self.__computer, self.__computer.__room)
在我的三节课中,我加入了对计算机的引用。我的类计算机有一个对room的引用,因此我尝试使用self.\uu Computer.\uu room
调用它,但这不起作用,我不确定如何调用此属性
这是我的密码:
class Room:
__name = "unknown"
def __init__(self, name):
self.__name = name
def get_name(self):
return self.__name
class Device:
__name = "Device"
def __init__(self, name):
self.__name = name
def as_text(self):
return "%s" % (self.__name)
class Computer(Device):
__ip = "unknown"
def __init__(self, name, ip, room):
super().__init__(name)
self.__ip = ip
self.__room = room
def as_text(self):
return "%s with ip=%s" % (super().as_text(), self.__ip)
class Laptop(Computer):
def __init__(self, name, room, ip, with_case = True):
super().__init__(name, room, ip)
self.__with_case = with_case
def as_text(self):
if (self.__with_case):
return "%s with case" % super().as_text()
else:
return super().as_text()
class Screen(Device):
__width = "1920"
__height = "1080"
def __init__(self, name, width, height, computer):
super().__init__(name)
self.__width = width
self.__height = height
self.__computer = computer
def as_text(self):
return "{} an {}".format(self.__name, self.__computer)
class Tastatur(Device):
__language = 'English'
def __init__(self, name, language, computer):
super().__init__(name)
self.__language = language
self.__computer = computer
class Maus(Device):
__type = 'Gaming Mouse'
def __init__(self, name, type, computer):
super().__init__(name)
self.__type = type
self.__computer = computer
你的要求不是特别清楚,这是我得到的。 这是我对Screen类的方法:
def as_text(self):
返回{}格式的{}和{}。格式(super().as_text(),self.\u computer.as_text(),self.\u computer.display_room())
这将从父类设备调用方法作为\u text
self.__computer.as_text()
这将从计算机类的实例调用as_text()
方法,该实例是类屏幕的属性
self.__computer.display_room()
这将从Computer类调用方法display\u room()
,我创建了它并返回房间的名称
def显示室(自):
返回self.\u房间。获取\u名称()
现在,您应该能够自己为Tastur和Maus编写方法了。您的请求不是特别明确,这里是我得到的。 这是我对Screen类的方法:
def as_text(self):
返回{}格式的{}和{}。格式(super().as_text(),self.\u computer.as_text(),self.\u computer.display_room())
这将从父类设备调用方法作为\u text
self.__computer.as_text()
这将从计算机类的实例调用as_text()
方法,该实例是类屏幕的属性
self.__computer.display_room()
这将从Computer类调用方法display\u room()
,我创建了它并返回房间的名称
def显示室(自):
返回self.\u房间。获取\u名称()
现在,您应该可以自己为Tastur和Maus编写方法了。不要再像这样使用双下划线名称了。另外,停止创建类变量,只在
\uuuu init\uuuu
中立即使用实例变量对其进行阴影处理,这是我的老师的要求,必须保持这种方式。请注意,您正在学习“Python中的Java”。无论如何,你都试过什么?不清楚您所说的“有人能告诉我如何在不更改程序本身的情况下为这3个类定义这样的方法”是什么意思吗?您所说的“不更改程序本身”是什么意思?定义方法就是改变程序本身。但无论如何,你的要求/限制对我来说是完全清楚的。@juanpa.arrivillaga对不起,这是我老师给我的一个程序。我只是想做一些像我上面提到的那样的改变。你知道我怎么能再这样做吗?你试过什么吗?对不起,这不是你们班的辅导服务。我们不仅仅是为你做家庭作业。到底是什么给你带来了麻烦?不要再像这样使用双下划线名称了。另外,停止创建类变量,只在\uuuu init\uuuu
中立即使用实例变量对其进行阴影处理,这是我的老师的要求,必须保持这种方式。请注意,您正在学习“Python中的Java”。无论如何,你都试过什么?不清楚您所说的“有人能告诉我如何在不更改程序本身的情况下为这3个类定义这样的方法”是什么意思吗?您所说的“不更改程序本身”是什么意思?定义方法就是改变程序本身。但无论如何,你的要求/限制对我来说是完全清楚的。@juanpa.arrivillaga对不起,这是我老师给我的一个程序。我只是想做一些像我上面提到的那样的改变。你知道我怎么能再这样做吗?你试过什么吗?对不起,这不是你们班的辅导服务。我们不仅仅是为你做家庭作业。到底是什么给你带来了麻烦?