首页 / PYTHON / Python类继承初始化
Python类继承初始化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python类继承初始化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2062字,纯文字阅读大概需要3分钟。
内容图文
我有以下示例设置:
class Feet:
def __init__ (self, value = 0.0):
self.value = value
self.units = "f"
def feet(self):
return self.value
class Meters:
def __init__(self, value = 0.0):
self.value = value
self.units = "m"
def feet(self):
# This is probably not an accurate conversion.
return self.value * 2.54 * 10
class Distance (Feet, Meters):
def __init__(self, type = Feet()):
Feet.__init__(self)
Meters.__init__(self)
print type.feet() -- Prints 254.0
self = type
print self.feet() -- Prints 254.0
dist = Distance(Meters(10.0))
print dist.units -- Prints = "m"
print dist.value -- Prints = 0.0
print dist.feet() -- Prints = 0.0
我似乎无法理解为什么当我将类初始化为Meters类类型并将其指定为10.0时,我不保留10.0.然而,单位似乎保持正确.我错过了有关如何设置的内容吗?
我的理解是,我正在创建Meters的“实例”,并将其分配给Distance的“self”变量.如果自我值无法修改,我可以理解我的单位是否为“f”,但我的单位是“m”所以它显然将Meters类分配给自己,但它没有采用实例化的值,我觉得很奇怪.
说实话我甚至不知道在这种情况下我会谷歌,所以我道歉我没有做过很多谷歌搜索,我发现的大部分内容根本不适用于这类问题.
另外,我的计划是基本上将它“转换”为相同的类型,无论你传入什么,例如脚我会返回Feet类的自我实例,而在Meters类中我会返回Feet(self.Value) * 2.54 * 10)所以我总是在脚上有距离.
所以脚脚变成了
def feet(self):
return self
因为米脚变成了
def feet(self):
return Feet(self.value * 2.54 * 10)
回顾一下,有没有理由我能够在初始化过程中传入2个类中的1个,但它不会为该类接受我的初始化参数?
我真的不清楚为什么我可以在距离类中指定“自我”,在它返回之前它似乎有正确的初始化但在返回时它不能正常工作.
解决方法:
问题是你继承了2类Feet and Meters.两个类都有相同的方法.在您的Distance .__ init __()方法中,在执行此操作时,您将使用Meters的方法覆盖Feet的方法:
Feet.__init__(self)
Meters.__init__(self)
我会做的不同:
class Distance(object):
def __init__(self, meters=None, feet=None):
self.feet = feet
self.meters = meters
然后你可以这样做:
distance = Distance(meters=Meters(12))
print distance.meters.value
print distance.meters.type
# Here do whatever you want with them
您可以同时传入这两个对象.并做一些其他的东西
两个对象如果两者都不同于None.
内容总结
以上是互联网集市为您收集整理的Python类继承初始化全部内容,希望文章能够帮你解决Python类继承初始化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。