class Dict(dict): def __init__(self, **kw): super().__init__(**kw)调用的事dict这个父类的init方法嘛
时间: 2023-05-25 15:06:22 浏览: 56
是的,`Dict`类继承了`dict`父类的所有属性和方法,包括`__init__`方法。在`Dict`类的`__init__`方法中,使用`super().__init__(**kw)`来调用父类`dict`的`__init__`方法。这表示在`Dict`类创建实例时,会先调用父类的`__init__`方法完成初始化,然后再添加`Dict`类自己的一些属性和方法。
相关问题
class AttrDict(dict): def __init__(self, *args, **kwargs): super(AttrDict, self).__init__(*args, **kwargs) self.__dict__ = self
这是一个 Python 类的定义,它继承了内置的 `dict` 类。该类的作用是将字典转化为属性访问的形式。在初始化时,它会调用父类的构造函数,然后将自己的 `__dict__` 属性设置为自己,这样就可以使用属性访问来访问字典中的元素。例如,如果有一个字典 `d`,则可以使用 `d.key` 的形式来访问字典中键为 `key` 的值。
class Stock: def __init__(self, name, shares, price): self.name = name self.shares = shares self.price = price class MyStock(Stock): def __init__(self, name, shares, price, factor): super().__init__(name, shares, price) self.factor = factor def cost(self): return self.factor * super().cost()
好的,现在我明白你的问题了。下面是一个实现从一个字典列表创建 Stock 实例列表并计算总成本的函数,支持使用 `*args` 和 `**kwargs` 调用:
```python
def create_stock_list(*args, **kwargs):
stocks = []
for stock_dict in args:
stock = Stock(**stock_dict)
stocks.append(stock)
for stock_dict in kwargs.values():
stock = Stock(**stock_dict)
stocks.append(stock)
total_cost = sum([stock.shares * stock.price for stock in stocks])
return stocks, total_cost
```
这个函数接受一个或多个字典作为参数,每个字典包含了一个 Stock 实例的信息,如下所示:
```python
stock_dict = {'name': 'AAPL', 'shares': 100, 'price': 150.0}
```
使用 `*args` 调用时,只需要将字典作为参数传递给函数即可:
```python
stock_dict1 = {'name': 'AAPL', 'shares': 100, 'price': 150.0}
stock_dict2 = {'name': 'GOOG', 'shares': 50, 'price': 1200.0}
stocks, total_cost = create_stock_list(stock_dict1, stock_dict2)
```
使用 `**kwargs` 调用时,需要将字典作为关键字参数传递给函数,如下所示:
```python
stock_dict1 = {'name': 'AAPL', 'shares': 100, 'price': 150.0}
stock_dict2 = {'name': 'GOOG', 'shares': 50, 'price': 1200.0}
stocks, total_cost = create_stock_list(stocks1=stock_dict1, stocks2=stock_dict2)
```
在函数内部,我们使用了两个循环,一个循环用于处理 `*args`,另一个循环用于处理 `**kwargs`。我们使用 `super()` 函数调用父类的 `__init__()` 方法来创建 Stock 实例,然后将其添加到一个列表中。最后,我们计算列表中所有 Stock 实例的总成本,并将其返回。
另外,由于你提到了 `MyStock` 类,并且在 `__init__()` 方法中使用了 `super()` 函数,所以我假设你的实际问题是如何在 `MyStock` 类中计算成本。在这种情况下,你可以在 `MyStock` 类中重载 `cost()` 方法,如下所示:
```python
class MyStock(Stock):
def __init__(self, name, shares, price, factor):
super().__init__(name, shares, price)
self.factor = factor
def cost(self):
return self.factor * super().cost()
```
这个 `cost()` 方法将会使用 `super()` 函数调用父类的 `cost()` 方法,然后将其乘以一个因子,以计算 `MyStock` 实例的成本。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)