python - 在 Square 子类的 __init()__ 函数中使用 super() 时,Square 对象有什么属性?
问题描述
请考虑以下代码:
class Rectangle(object):
def __init__(self, height, length):
self.height = height
self.length = length
def area(self):
return self.height * self.length
def perimeter(self):
return 2 * (self.height + self.length)
class Square(Rectangle):
def __init__(self, length):
super(Square, self).__init__(length, length)
s = Square(5)
s.area(), s.perimeter()
对象包含哪些属性Square
- 它只是length
属性还是两者height
兼而有之length
?如果我们看到类__init__()
方法的参数Square
,它必须只包含length
属性。但是super()
方法正在初始化length
和height
属性。应该如何可视化一个Square
对象?
解决方案
print(s.__dict__)
给{'height': 5, 'length': 5}
因此,它具有这两个属性。
附加信息:- 为了清楚起见,您也可以help
在实例上使用。例如
print(help(s)) That will give:
Help on Square in module __main__ object:
class Square(Rectangle)
| Square(length)
|
| Method resolution order:
| Square
| Rectangle
| builtins.object
|
| Methods defined here:
|
| __init__(self, length)
| Initialize self. See help(type(self)) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from Rectangle:
|
| area(self)
|
| perimeter(self)
|
| ----------------------------------------------------------------------
| Data descriptors inherited from Rectangle:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
推荐阅读
- kubernetes - amazon-efs 失败,服务器给出的原因:没有这样的文件或目录
- python - 模型实例设置 || 未找到带有参数 '('',)' 的 '' 的反向操作。已尝试 1 种模式
- json - JSONDecodeError:期望','分隔符:第 9051348 行第 27 列(字符 226492416)
- java - 如何将两个不同的数组变成一个二维数组
- apache-kafka - 未提交消息的计数 kafka
- php - 如何以多页重力形式将用户重定向到最后一页
- xamarin.forms - Xamarin.Forms.Svg.SvgImageSource.FromSvgUri() 不适用于 file:// URI
- vba - VBA - Onclick 图像 - VBA 屏幕
- html - 如何在不使用按钮的情况下切换引导模式?
- python-3.x - 使用 Python boto3 在 AWS 中上传图像