Python 一个继承的问题

44 天前
tubowen  tubowen
Python 中
定义了一个 TCP 类,继承自 socket.socket 类
TCP 类中的 init 方法:
def __init__(self):
   super().__init__()
   self.name="xxx"

TCP 类只重写了 init 这一个方法
现在 tcp 类的实例,调用 accept 方法的时候,返回的是 socket 类的实例,没有 name 属性,
应该怎么重写 accept 方法,可以让 tcp 类的实例调用 accept 方法的时候,有 socket 类的 accept 方法的作用,同时还能返回一个 TCP 类的对象,因为后面要用它的 name 字段
1160 次点击
所在节点   Python  Python
5 条回复
julyclyde
julyclyde
44 天前
先不说你的设计错误
单说技术问题,你还得覆盖一下 accept 方法,让它先调用原始的 accept 然后再修改即将返回的对象,变成返回你的自定义类
tubowen
tubowen
44 天前
@julyclyde 是得重写 accept 方法,这里可以怎么把父类的对象转成我自定义的对象
julyclyde
julyclyde
44 天前
@tubowen 你加一个构造函数,用父类对象做参数,包一下
yingxiangyu
yingxiangyu
43 天前
@tubowen #2 python 除非自定义方法,不然没发像 c++一样去转的
frostming
frostming
39 天前
你这场景就是组合优于继承
写一个类包装一个 socket ,比继承 socket 添加自己的方法,更适合解决你的需求
这样把 accept 得到的 socket 包装一下就能得到你的对象

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1089921

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX