解析python中的类:
解析python中的类:
#!/usr/bin/env python # -*- coding:utf-8 -*- class GrandPa: def __init__(self): print ('I\'m GrandPa') class Father(GrandPa): def __init__(self): print ('I\'m father') class Son(Father): """ A simple example class!!! """ i = 12345 def __init__(self): print ('这是构建函数,son') def sayHello(self): return 'Hello word!' if __name__ == '__main__': son = Son() #类型帮助信息 print('类型帮助信息:',Son.__doc__) #类型名称 print('类型名称',Son.__name__) #类型所继承的基类 print('类型所继承的基类',Son.__bases__) #类型字典 print('类型字典',Son.__dict__) #类型所在模块 print('类型所在模块',Son.__module__) #类型实例 print('类型实例',Son().__class__)
结果:
C:\Python34\python.exe D:/mypython/lzt-lab/1.py 这是构建函数,son 类型帮助信息: A simple example class!!! 类型名称 Son 类型所继承的基类 (<class '__main__.Father'>,) 类型字典 {'__init__': <function Son.__init__ at 0x0000000002B1ED90>, 'i': 12345, '__module__': '__main__', '__doc__': ' A simple example class!!!\n ', 'sayHello': <function Son.sayHello at 0x0000000002B1EE18>} 类型所在模块 __main__ 这是构建函数,son 类型实例 <class '__main__.Son'> Process finished with exit code 0
1 python 支持多重继承
首先第一点,你会发现Class的定义中有一个括号,这是体现继承的地方。
2.__init__ 是class中的构造函数:
__init__ 是class中的构造函数
两种不同形式的构造函数体现了Python支持函数重载。在构造函数中,有一个特别的参数self,其含义与我们在Java和C#中常见的this是一样的。在这里需要强调一点:在Class中定义的方法实质上也是function,但是在方法定义的时候必须包含self这个参数,而且必须将self这个参数放在第一位;
3.那么为什么要使用 self 呢?
python类的方法和普通的函数的一个最大的区别就是在类中的方法必须有一个额外的参数——self,而且是第一个参数。当然了,这个只是显式的表现出来,在调用的时候不必给这个参数进行赋值。
调用类方法的时候,他会默认给你的参数增加一个变量进行初始化self,这个是隐式的增加。
尽管你的类的方法不需要任何参数,但还是得给这个方法定义一个self参数,在调用的时候我们完全不用理会这个参数。
self代表当前对象的地址。self能避免非限定调用造成的全局变量。
例子:
- class url():
- ...
- ...
- def portview():
- ...
- ...
- if __name__ == '__main__':
- address = url()
- address.portview()
- def portview():
改为:
- def portview(self):
- address.portview()
会自动转换为:
- address.portview(url)