python 面向对象编程案例01

# -*- coding: utf-8 -*-
#python 27
#xiaodeng
#面向对象编程案例01


class Behave():
    def __init__(self,name):
        self.name=name
    def once(self):
        print "self.name-->",self.name
    def rename(self,newName):#重新赋值属性的def方法
        self.name=newName
    def repeat(self,N):#repeat-重复
        #新创建一个方法,其中调用once方法
        for i in range(N):
            self.once()
    

#
beehive=Behave("xiaodeng")
beehive.repeat(4)
beehive.rename("FengMei")
beehive.once()
print beehive.name#点号后面可以接属性名或方法名()均可
#重复赋值属性
beehive.name="I love china"
beehive.once()#返回值有一个None,原因是once构造函数只有print没有return语句



#类的自带方法
#__len__
print beehive.name.__len__()



print "----"*10
#继承:子类继承父类(超类)的所有共有实例变量和方法,实现代码的重用,减少代码的编写量
#python在类名后用一个圆括号表示继承关系,括号中的类表示父类
#如果父类定义了__init__方法,则子类必须显示地调用父类的__init__方法,如果子类需要拓展父类的类行为,则可以添加__init__方法的参数

class Subclass(Behave):#继承Behave超类中的方法
    def once(self):#重写once(),针对once重写写其代码,原方法在此类中调用时失效
        print '继承:',self.name
bb=Subclass("hubei")
bb.repeat(2)
#小结
'''
1、定义函数(方法)和属性均有def语句
2、函数第一个参数默认为self,实例化对象本身;他代表当前对象的地址
3、__init__方法被称之为构造函数,也可以叫做初始化函数;目的是用来创建实例,他通过传递参数来初始化一个实例,__init__将主体部分新建的实例的属性
正确绑定,并初始化其状态。
4、类实例的行为由其他方法来实现,一般来讲,方法均会访问实例的属性
5、一旦实例化一个类,你是对类实例调用方法,访问的是类实例的属性,重新绑定也是类实例的属性
'''