Python中文
首页
教程
问答
标签
搜索
登录
注册
使用其他类的方法,但不使用inheritan
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>这个问题是关于<em>Python</em>继承的,但是用一个Django例子解释了这个问题,这应该不会有什么坏处。你知道吗</p> <p>我有这个Django模型,还有<code>Page</code>和<code>RichText</code>模型:</p> <pre><code>class Gallery(Page, RichText): def save(self, *args, **kwargs): # lot of code to unzip, check and create image instances. return "something" </code></pre> <p>我只对在另一个类中使用<code>save</code>方法感兴趣。你知道吗</p> <p>解决方案可以是:</p> <pre><code>class MyGallery(models.Model): def save(self, *args, **kwargs): # here goes the code duplicated from Gallery, the same. return "something" </code></pre> <p>我希望避免代码重复,而且我对从<code>Page</code>和<code>RichText</code>继承成员不感兴趣(所以我不想做<code>class MyGallery(Gallery):</code>)。如果合法的话,我会这样写:</p> <pre><code>class MyGallery(models.Model): # custom fields specific for MyGallery # name = models.CharField(max_length=50) # etc def save(self, *args, **kwargs): return Gallery.save(self, *args, **kwargs) </code></pre> <p>但是它不起作用,因为<code>Gallery</code>中的<code>save()</code>需要一个<code>Gallery</code>的实例,而不是<code>MyGallery</code>。你知道吗</p> <p>有没有办法将<code>save()</code>方法从<code>Gallery</code>中“分离”出来,并在<code>MyGallery</code>中使用它?你知道吗</p> <p><strong>编辑:</strong></p> <p>我忘了说<code>Gallery</code>是给定的,不能更改。你知道吗</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我不知道你为什么反对继承,特别是在方法方面。我定期创建一个<code>MixIn</code>类,这个类由我所有的Django <code>models.Model</code>继承,它包含各种有用的URL创建、转储等方法。我确实让这些方法具有防御性,因为它们使用<code>hasattr()</code>来确保它们应用于某个特定的类,但是这样做可以节省大量的时间。你知道吗</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
文本导入时标题行中的特殊字符
2 回答
文本小部件:在没有输入时更新并在循环后保持空闲
4 回答
文本小部件tkin
5 回答
文本小部件tkinter中的标签更改或文本外观更改是否有撤消功能?
4 回答
文本小部件tkinter复制图像选项
6 回答
文本小部件上的Python Tkinter ttk滚动条未缩放
5 回答
文本小部件上的滚动条可能需要根据制表符ord显示前进行滚动
9 回答
文本小部件不显示lis中的内容
8 回答
文本小部件不显示Unicode字符
2 回答
文本小部件中写入的行间距
4 回答
文本小部件中的文本作为变量
7 回答
文本小部件中的滚动条仅显示在底部
10 回答
文本小部件中的选项卡键空间计数
8 回答
文本小部件作为Lis
7 回答
文本小部件在主框架中扩展列宽
6 回答
文本小部件未使用删除功能清除
1 回答
文本小部件滚动动画(Tkinter、Python)
3 回答
文本居中。格式正确吗?
7 回答
文本差分算法
5 回答
文本已知时音频文件中的单词索引
4 回答