python中的面向对象
来源:互联网 发布:dd是什么意思网络用语 编辑:程序博客网 时间:2024/06/05 20:29
一. 定义类
经典类:如果没有直接或间接的子类化一个对象,也就是说如果没有指定一个父类,或者是如果子类化的基本类没有父类,那么就定义了经典类:
class A: pass
新式类:如果你的类没有继承任何父类,object将作为默认的父类
class B(object): pass
Python 2.x中默认都是经典类,只有显式继承了object才是新式类
Python 3.x中默认都是新式类,不必显式的继承object
二. 定义类的属性
1.1 直接在类里定义
class A(object): a=100
在不做修改的情况下,所以这个类的对象的属性都是一样的
1.2 在构造函数里定义
class A(object): def __init__(self,a): self.a=100
构造对象时把一些属性的值传进去,不同的对象可以有不同的属性
2.访问控制
python没有访问控制,没有提供私有属性的功能,在日常编程中通过一些编程规范和命名规则进行约束
前面加_表示私有属性(只是一种编程规范,不是python语法的功能,仍然可以访问到)
前面加__变相实现了部分私有属性的访问
class Programer(object): def__init__(self,weight): self.__weight=weight def get_weight(self): return self.__weightif __name__=='__main__': p=Programer(80) print(p.get_weight()) print(p._Programer__weight)#80#80
三. 定义类的方法
方法包括:普通方法、静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同。
普通方法:由对象调用;至少一个self参数;执行普通方法时,自动将调用该方法的对象赋值给self
类方法:由类调用; 至少一个cls参数;执行类方法时,自动将调用该方法的类复制给cls
静态方法:由类调用;无默认参数
class Foo: def __init__(self, name): self.name = name def ord_func(self): """ 定义普通方法,至少有一个self参数 """ # print self.name print '普通方法' @classmethod #类方法的装饰器 def class_func(cls): """ 定义类方法,至少有一个cls参数 """ print '类方法' @staticmethod #静态方法的装饰器 def static_func(): """ 定义静态方法 ,无默认参数""" print '静态方法'# 调用普通方法,对象名调用f = Foo()f.ord_func()# 调用类方法,类名调用Foo.class_func() # 调用静态方法,类名调用Foo.static_func()
四. 类的继承
继承的子类会继承父类的所有属性,也可以自己定义,覆盖父类的属性和方法
对于面向对象的继承来说,其实就是将多个类共有的方法提取到父类中,子类仅需继承父类而不必一一实现每个方法
class 类名(要继承的类):
如果不继承类,则继承object类,object类是所有类的父类
调用父类的方法:
super(自己的类名,self).相应的方法名
多继承:
1、Python的类可以继承多个类,Java和C#中则只能继承一个类
2、Python的类如果继承了多个类,那么其寻找方法的方式有两种,分别是:深度优先和广度优先
当类是经典类时,多继承情况下,会按照深度优先方式查找
当类是新式类时,多继承情况下,会按照广度优先方式查找
- python中的面向对象
- python中的面向对象
- python中的面向对象
- python 中的面向对象
- 关于python中的面向对象
- python面向对象中的类
- 15Python中的面向对象
- Python中的面向对象编程详解(上)
- Python中的面向对象编程详解(下)
- 深入理解Python中的面向对象
- Python 面向对象中的__init__、__new__以及super()
- Python中的面向对象特性(更新中……)
- python 面向对象
- python面向对象初步
- python面向对象
- Python面向对象详解
- python面向对象编程
- python面向对象
- HOG特征学习
- 汉诺塔算法解析
- hdu4825 Xor Sum【Trie、Xor】
- Machine Learning Diagnostic
- linux动态链接库导出函数控制
- python中的面向对象
- CodeForces
- 需求分析的图形工具(层次方框 warnier IPO)
- Butterknife 8.4.0版本的使用:
- hdu4292
- Linux 如何打开端口
- C++Primer第五版 第十三章习题答案(1~10)
- ext4_mpage_readpages
- poj3481(通过stl中的set,以及pair和make_pair简单通过)