Python学习(十四)——面向对象
2017-10-01 14:20
281 查看
面向对象
类的基本使用:
1 编写一个空类
2 编写一个简单类
定义一个猫的类,默认为所有猫的叫声都是'Meow':
输出:
3 为简单类添加一个属性
在猫类下添加一个catName方法,绑定一个name属性,在实例化的时候记录猫的名字:
输出:
4 通过定义一个init方法,把一些必须绑定的属性强制填写进去;
这里认为所有的猫都该有个自己的名字,所以将name绑定到init方法上:
5 添加类属性
类属性(class attributes):与实例无关,修改类属性需要使用类名.
可以由类中的方法来更新,也可以在主程序中更新.
输出:
6 类的继承
Python中类的继承可以单继承也可以多继承.
输出:
常规方法 类方法 静态方法
即常规方式, @classmethod修饰方式, @staticmethod修饰方式
常规方法绑定对象的实例;
类方法方法绑定对象
静态方法没有参数绑定
输出:
类的基本使用:
1 编写一个空类
# 空类 class MyClass(object): 'abs' pass
2 编写一个简单类
定义一个猫的类,默认为所有猫的叫声都是'Meow':
# 简单类 class Cat(object): def cry(self): print 'Meow! Meow!' if __name__ == '__main__': #实例化 cat = Cat() cat.cry()
输出:
Meow! Meow!
3 为简单类添加一个属性
在猫类下添加一个catName方法,绑定一个name属性,在实例化的时候记录猫的名字:
class Cat(object): "define a class" def catName(self, name): self.name = name def cry(self): print 'Meow! Meow! I am %s.'%self.name if __name__ == '__main__': # 程序入口 cat = Cat() cat.catName('Min') # 设置实例属性 cat.cry() # 设置实例行为
输出:
Meow! Meow! I am Min.
4 通过定义一个init方法,把一些必须绑定的属性强制填写进去;
这里认为所有的猫都该有个自己的名字,所以将name绑定到init方法上:
# __init__()举例 class Cat(object): "define a class" def __init__(self, name): self.name = name def cry(self): print 'Meow! Meow! I am %s.'%self.name if __name__ == '__main__': # 程序入口 cat = Cat('Min') cat.cry() # 设置实例行为
5 添加类属性
类属性(class attributes):与实例无关,修改类属性需要使用类名.
可以由类中的方法来更新,也可以在主程序中更新.
class Cat(object): "define a class" counter = 0 def __init__(self, name): self.name = name Cat.counter += 1 # 注意:修改类属性需要使用类名. def cry(self): print 'Meow! Meow! I am %s.'%self.name print Cat.counter if __name__ == '__main__': # 程序入口 for i in range(5): cat = Cat('cat'+str(i+1)) cat.cry() # 设置实例行为
输出:
Meow! Meow! I am cat1. 1 Meow! Meow! I am cat2. 2 Meow! Meow! I am cat3. 3 Meow! Meow! I am cat4. 4 Meow! Meow! I am cat5. 5
6 类的继承
Python中类的继承可以单继承也可以多继承.
class Cat(object): "define a class" counter = 0 def __i b979 nit__(self, name): self.name = name Cat.counter += 1 # 注意:修改类属性需要使用类名. def cry(self): print 'Meow! Meow! I am %s.'%self.name print Cat.counter # 子类PersionCat继承了父类Cat class PersionCat(Cat): def cry(self): # 子类重写了父类中的cry()方法 print 'I am %s. and I am a Persion Cat' % self.name if __name__ == '__main__': # 程序入口 for i in range(5): cat = PersionCat('cat'+str(i+1)) cat.cry() # 设置实例行为
输出:
I am cat1. and I am a Persion Cat I am cat2. and I am a Persion Cat I am cat3. and I am a Persion Cat I am cat4. and I am a Persion Cat I am cat5. and I am a Persion Cat
常规方法 类方法 静态方法
即常规方式, @classmethod修饰方式, @staticmethod修饰方式
常规方法绑定对象的实例;
类方法方法绑定对象
静态方法没有参数绑定
class A(object): def f(self, x): print("f(%s,%s)" % (self, x)) print('self:', self) @classmethod def classmethod_f(cls, x): print("classmethod_f(%s,%s)" % (cls, x)) print('cls:', cls) @staticmethod def staticmethod_f(x): print("staticmethod_f(%s)" % x) cat = A() print(cat.f(456)) print(cat.classmethod_f(895656)) print(cat.staticmethod_f(5))
输出:
f(<__main__.A object at 0x7f912d3ab6d0>,456) ('self:', <__main__.A object at 0x7f912d3ab6d0>) None classmethod_f(<class '__main__.A'>,895656) ('cls:', <class '__main__.A'>) None staticmethod_f(5) None
相关文章推荐
- python学习(十四)面向对象
- python OpenCV学习笔记(十四):边缘检测
- Python学习之面向对象
- Python3 学习第五弹:类与面向对象
- Python学习笔记——面向对象2
- PYTHON框架之DJANGO学习笔记(十四)
- python开发学习-day06(模块拾忆、面向对象)
- Python学习之面向对象(类的特殊方法)
- Python学习笔记(十四)
- python学习(八):面向对象(三)
- python学习笔记(三)面向对象
- Python学习_面向对象(OOP)一:类的实现机制
- Python学习 Day 7 面向对象 类和实例 访问限制
- python学习之面向对象【入门初级篇】
- Python学习笔记(三)函数、面向对象、模块发布
- Python学习系列之面向对象
- 14. Python脚本学习笔记十四异常
- Python学习笔记十一:面向对象
- Python学习随笔六:抽象之面向对象
- python学习之路-面向对象的编程