关于 __init__() 函数,它本身就是一个 python 构造函数。该函数类似于init()初始化方法,用于初始化新创建对象的状态,在对象创建后立即调用。
1.首先,两个下划线开头的函数声明该属性是私有的,不能在类外使用或直接访问。
2、init函数(方法)支持带参数的类的初始化,也可以声明类的属性。
3.init函数(方法)的第一个参数必须是self(self是成语,也可以使用其他名称),后面的参数可以自由指定,和定义一个函数没有区别。
self参数含义
在类的代码(函数)中,需要访问当前实例中的变量和函数,即访问Instance:
对应的变量(property):Instance.ProperyNam,去读取之前的值和写入新的值
调用对应函数(function):Instance.function(),即执行对应的动作
此处的Instance本身就是self。
Python中的self等价于C++中的self指针和Java、C#中的this参数。
实例
比如像实例化一个类:
class Cats:
def __init__(self):
self.age = 2
>>>mimi = Cats()
>>>mimi.age
>>>2
我们会发现,在Cats中将age的值初始化为2后,实例化就可以直接调用age的值了。
了解了构造函数之后,再来说说构造函数中的初始值不能被继承的问题。
class Dog:
def __init__(self):
self.hungry = True
def eat(self):
if self.hungry:
print 'wang'
else:
print 'no'
class hsq(Bird):
def __init__(self):
self.fur = 'white'
def play(self):
print ("chaijia")
hh = haq()
hh.play() #能正常输出
hh.eat() #报错,因为hsq中没有hungry特性
原理:调用实例的方法时,方法的self参数自动绑定到实例上(称为绑定方法);
解决:使用super函数(只在新式类中有用)
class hsq(Dog):
def __init__(self):
super(Dog,self).__init__()
self.sound = 'Squawk'
def sing(self):
print self.song()
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python如何使用迭代器11/12
- ♥ 如何使用python脚本进行文本转换?11/24
- ♥ python中join如何生成新的字符串?01/11
- ♥ 如何在python中更新包10/06
- ♥ 详解Python3内置模块json编解码方法12/30
- ♥ 如何在python中删除换行符08/12
内容反馈