python 中_init_函数以及参数self

Posted 渐渐遗忘者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 中_init_函数以及参数self相关的知识,希望对你有一定的参考价值。

1)class类包含:

类的属性:类中所涉及的变量 
类的方法:类中函数

2)_init_函数(方法)

1.首先说一下,带有两个下划线开头的函数是声明该属性为私有,不能在类地外部被使用或直接访问。 
2.init函数(方法)支持带参数的类的初始化 ,也可为声明该类的属性 
3.init函数(方法)的第一个参数必须是 self(self为习惯用法,也可以用别的名字),后续参数则可 以自由指定,和定义函数没有任何区别。

3)函数定义 
Python编程中对于某些需要重复调用的程序,可以使用函数进行定义,基本形式为: 
def 函数名(参数1, 参数2, ……, 参数N): 其代码形式如下面所示:

def function_name (parameters):

  block

  return value

 

注意在类的内部,使用def关键字可以为类定义一个函数(方法),与一般函数定义不同,类方法必须包含参数self,且为第一个参数! 
此外,可使用 **kw定义关键参数,代表任意参数,python函数可变参数及关键字参数定义参考见下文。 
python函数只能先定义再调用!

 

4)self参数含义 
在类的代码(函数)中,需要访问当前的实例中的变量和函数的,即,访问Instance中的: 
对应的变量(property):Instance.ProperyNam,去读取之前的值和写入新的值 
调用对应函数(function):Instance.function(),即执行对应的动作 
此处的Instance本身就是self。 
Python中的self等价于C++中的self指针和Java、C#中的this参数。

5)一个简单实例

5.1代码如下

 

class person():
    def __init__(self,name,gender,birth,**kw):
        self.name=name
        self.gender=gender
        self.birth=birth
        for k,w in kw.iteritems():
            setattr(self,k,w)
    def sayhi(self):
        print my name is,self.name
xiaoming = person(Xiao Ming, Male, 1991-1-1,job=student,tel=18089355,stdid=15010)
xiaohong = person(Xiao Hong, Female, 1992-2-2)
print xiaoming.name
print xiaohong.birth
print xiaoming.job
print xiaoming.tel
print xiaoming.stdid
print xiaoming.sayhi()

 

5.2 运行结果

 

Xiao Ming
1992-2-2
student
18089355
15010
my name is Xiao Ming
None

 

5.3实例解释 
在本例中建立一个person的类,并赋值了两个实例:xiaoming和xiaohong , self指的是传入的实例(不同实例类的属性值不同以及方法执行结果不同)即xiaoming和xiaohong,类的属性即为name,gender,birth及其他kw,类的方法即为sayhi。有关关键字参数请参考python的可变参数和关键字参数(*args **kw)

6)参考资源
python类的初始化属性















以上是关于python 中_init_函数以及参数self的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中使用不同的参数调用超类构造函数

__init__ 和 Python 中的参数

python 类函数

python构造函数中的参数不匹配[重复]

python类属性不能用作构造函数的参数?

Python之面向对象