python面向对象
2015-09-17 23:15
435 查看
class People(): address = 'china' def __init__(self,name='chen'): self.__name = name def sayHi(self): return 'hi,'+self.__name #类属性的动态加载 #如果类People不包含属性age,并不会报错,而是会动态添加一个属性 People.age = 25 p1 = People('simon') print p1.age #实例实际上是类的一个拷贝 #如果在实例上修改类属性,它实际上并没有修改类属性,而是给实例绑定了一个实例属性。 p1.address = 'japan' p2 = People('duoduo') print p2.address #china print People.address #china #类中定义的方法其实上也是一个属性,它实际上是函数对象 #p2.sayHi返回的是一个函数对象,但这个函数是一个绑定到实例的函数,p2.sayHi()才是方法调用。 print p2.sayHi #<bound method People.sayHi of <__main__.People instance at 0x0000000002780DC8>> print p2.sayHi() #hi,duoduo class Person(): __count1 = 0 __count2 = 0 @classmethod def how_many1(cls): return cls.__count1 @classmethod def how_many2(cls): return cls.__count2 def how_many3(self): return self.__count1 def __init__(self,name): self.name = name self.__count1 = self.__count1 + 1 #self代表的是实例 Person.__count2 = Person.__count2 + 1 #Person代表的是类,注意书写方式 print Person.how_many1() print Person.how_many2() p3 = Person('Bob') print Person.how_many1() print Person.how_many2() #print Person.how_many3() #不能通过类来访问实例方法,必须通过类的实例来访问,如p1.how_many3() print p3.how_many1() print p3.how_many2() print p3.how_many3() print id(p3) p4 = p3 p3.name = 'chen' print id(p3) print id(p4) print p4.name #chen
相关文章推荐
- 对于python中的self,cls,decorator的理解
- win7 使用Notepad++文本编辑器编辑python
- 零基础学python-18.2 递归函数与分解递归函数的执行步骤
- 零基础学python-18.2 递归函数与分解递归函数的执行步骤
- Python sys模块常用方法 (六)
- python安装".egg"文件导入module
- Python教程
- Python中super的用法
- Python多重继承的异构构造器
- 根据父节点,返回其子节点
- python--set
- tree.py 模板
- [-]boost python notes
- python中import module问题
- [LeetCode]题解(python):012-Integer to Roman
- kNN算法python代码学习
- 2015/9/17 Python基础(13):函数
- [LeetCode]题解(python):011-Container With Most Water
- python os模块常用方法 (五)
- Python-OpenCV 图像与视频处理