https://www.cnblogs.com/qlshine/p/6049457.html
__init__ : 这个方法一般用于初始化一个类
#!/usr/bin/env python
# coding:utf-8
class Test(object):
"""
用于初始化类
"""
def __init__(self, a, b):
self.a = a
self.b = b
def res(self):
return (self.a, self.b)
t = Test(100, 200)
print t.res()
"""
(100, 200)
"""
https://blog.csdn.net/langb2014/article/details/54800016
__init__()
方法意义重大的原因有两个。第一是在对象生命周期中初始化是最重要的一步;每个对象必须正确初始化后才能正常工作。第二是__init__()
参数值可以有多种形式。
隐式超类——object
每一个Python类都隐含了一个超类:object。它是一个非常简单的类定义,几乎不做任何事情。我们可以创建object
的实例,但是我们不能用它做太多,因为许多特殊的方法容易抛出异常。
在超类中实现__init__()
我们通过实现__init__()
方法来初始化对象。当一个对象被创建,Python首先创建一个空对象并为该新对象调用__init__()
方法。这个方法函数通常用来创建对象的实例变量并执行任何其他一次性处理。
下面是Card
类示例定义的层次结构。我们将定义Card
超类和三个子类,这三个子类是Card
的变种。两个实例变量直接由参数值设置,并通过初始化方法计算:
class Card:
def __init__(self, rank, suit):
self.suit = suit
self.rank = rank
self.hard, self.soft = self._points()
class NumberCard(Card):
def _points(self):
return int(self.rank), int(self.rank)
class AceCard(Card):
def _points(self):
return 1, 11
class FaceCard(Card):
def _points(self):
return 10, 10
在这个示例中,我们提取__init__()
方法到超类,这样在Card
超类中的通用初始化可以适用于三个子类NumberCard
、AceCard
和FaceCard
。
这是一种常见的多态设计。每一个子类都提供一个唯一的_points()
方法实现。所有子类都有相同的签名:有相同的方法和属性。这三个子类的对象在一个应用程序中可以交替使用。