python面向对象开发 类的方法(精讲)
2013-03-26 02:48
786 查看
python
视频教程地址:http://v.youku.com/v_show/id_XNDg3NjQyNjQ4.html
代码规范!!!!
写出来的时候,
方法的地一个字母小写,从第二个字母开始,全部大写
类开头地一个字母大写!!!
按照这种方式!!!
千万不要写完代码后修改!!记住,第二个字母必须大写!!
类更大一点,第一个就需要大写!
-------------方法,第一个字母还是小写,后来的字母全部是大写!
视频上为什么到讲完了才说,然后自己改。怎么当程序员的,教学顺序有问题。
他们有
1 公有方法 public method
类中
2 私有方法 private method
只在类中被本类私有的,不能直接被外部被访问,或者只能通过类中其他方法访问,或者建立一个新的对象使用,object._Class__privatemethod() # 这种方式一般在测试中使用,生产环境下不推荐
3 类方法 class method
使类中的方法,可以直接调出来供外部使用,节省内存,但是会花搜索类方法的时间,需要加self
4 静态方法 static method
将类中该方法所有的内容都加载到内存中,搜索快捷,但是不节约内存。不需要加self
公有方法:
私有方法:
输出结果为:
调用私有方法的时候,还可以这样用:
输出结果为:
-----提示:
公有属性可以直接这样访问
输出是
但是公有方法不能这样访问,必须实例化(创造一个实例)
报错如下:
类方法:
比较简单的是使用装饰器,即 @classmethod
输出的是
如果不加类方法的话(即去掉@classmethod,或者不使用newClassFun = classmethod(classfun) 的这种新建一个类属性的方法),则不能直接用
报错:
静态方法:
用@staticmethod
用 staticnewfun = staticmethod(staticfun) # 新建一个静态方法,看起来比较麻烦
都可以达到将方法变成静态方法 的 目的。
注意上面的
statcitfun()没有self,表示全部加载了。
Milo.name 直接用的类名找属性了
输出结果是:
视频教程地址:http://v.youku.com/v_show/id_XNDg3NjQyNjQ4.html
代码规范!!!!
写出来的时候,
方法的地一个字母小写,从第二个字母开始,全部大写
类开头地一个字母大写!!!
class ExcellentPeople(): def cleverChinese(): def richGuys(): def beautifulGirls():
按照这种方式!!!
千万不要写完代码后修改!!记住,第二个字母必须大写!!
类更大一点,第一个就需要大写!
-------------方法,第一个字母还是小写,后来的字母全部是大写!
视频上为什么到讲完了才说,然后自己改。怎么当程序员的,教学顺序有问题。
他们有
1 公有方法 public method
类中
2 私有方法 private method
只在类中被本类私有的,不能直接被外部被访问,或者只能通过类中其他方法访问,或者建立一个新的对象使用,object._Class__privatemethod() # 这种方式一般在测试中使用,生产环境下不推荐
3 类方法 class method
使类中的方法,可以直接调出来供外部使用,节省内存,但是会花搜索类方法的时间,需要加self
4 静态方法 static method
将类中该方法所有的内容都加载到内存中,搜索快捷,但是不节约内存。不需要加self
公有方法:
私有方法:
#!/usr/bin/python #coding:utf8 class Milo(): name = "csvt" __private = "这是一个私有属性" def fun1(self): print self.name print "我是公有方法" def __fun2(self): print self.name print "我是私有方法" @classmethod def classfun(self): print self.name print "我是类方法" @staticmethod def staticfun(): # 静态方法 不用 self! 因为已经全部加载了 print Milo.name # 用类名选取类属性的表达方式!!! 不是self! print "我是静态方法" zou = Milo() zou._Milo__fun2() # 通过这种方式调用私有方法,仅供测试用 # 一般情况下私有方法都是要在类中被别的方法利用的 print zou._Milo__private # 私有属性也是这样调用的,尽在测试中用
输出结果为:
alex@universe ~/python/OOP $ python cls_LeiDeFangFa_in_details.py csvt 我是私有方法 这是一个私有属性
调用私有方法的时候,还可以这样用:
#!/usr/bin/python #coding:utf8 class Milo(): name = "csvt" __private = "这是一个私有属性" def fun1(self): print self.name print "我是公有方法" self.__fun2() def __fun2(self): print self.name print "我是私有方法" @classmethod def classfun(self): print self.name print "我是类方法" @staticmethod def staticfun(): # 静态方法不用加 self print Milo.name # 用类名选取类属性的表达方式!!! 不是self! print "我是静态方法" zou = Milo() zou.fun1() # 通过这种方式调用私有方法 # 一般情况下私有方法都是要在类中被别的方法利用的
输出结果为:
alex@universe ~/python/OOP $ python cls_LeiDeFangFa_in_details.py csvt 我是公有方法 csvt 我是私有方法
-----提示:
公有属性可以直接这样访问
print Milo.name
输出是
csvt
但是公有方法不能这样访问,必须实例化(创造一个实例)
Milo.fun1()
报错如下:
alex@universe ~/python/OOP $ python cls_LeiDeFangFa_in_details.py Traceback (most recent call last): File "cls_LeiDeFangFa_in_details.py", line 26, in <module> Milo.fun1() TypeError: unbound method fun1() must be called with Milo instance as first argument (got nothing instead)
类方法:
比较简单的是使用装饰器,即 @classmethod
#!/usr/bin/python #coding:utf8 class Milo(): name = "csvt" def fun1(self): print self.name print "我是公有方法" self.__fun2() def __fun2(self): print self.name print "我是私有方法" @classmethod def classfun(self): print self.name print "我是类方法" @staticmethod def staticfun(): # 静态方法 不用 self! 因为已经全部加载了 print Milo.name # 用类名选取类属性的表达方式!!! 不是self! print "我是静态方法" Milo.classfun()
输出的是
alex@universe ~/python/OOP $ python cls_LeiDeFangFa_in_details.py
csvt我是类方法
如果不加类方法的话(即去掉@classmethod,或者不使用newClassFun = classmethod(classfun) 的这种新建一个类属性的方法),则不能直接用
报错:
alex@universe ~/python/OOP $ python cls_LeiDeFangFa_in_details.py Traceback (most recent call last): File "cls_LeiDeFangFa_in_details.py", line 25, in <module> Milo.classfun() TypeError: unbound method classfun() must be called with Milo instance as first argument (got nothing instead)
静态方法:
用@staticmethod
用 staticnewfun = staticmethod(staticfun) # 新建一个静态方法,看起来比较麻烦
都可以达到将方法变成静态方法 的 目的。
#!/usr/bin/python #coding:utf8 class Milo(): name = "csvt" def fun1(self): print self.name print "我是公有方法" self.__fun2() def __fun2(self): print self.name print "我是私有方法" @classmethod def classfun(self): print self.name print "我是类方法" @staticmethod def staticfun(): print Milo.name print "我是静态方法" Milo.staticfun()
注意上面的
@staticmethod def staticfun(): print Milo.name print "我是静态方法"
statcitfun()没有self,表示全部加载了。
Milo.name 直接用的类名找属性了
输出结果是:
alex@universe ~/python/OOP $ python cls_LeiDeFangFa_in_details.py
csvt我是静态方法
相关文章推荐
- python面向对象开发3 (内部类-构造-析构)魔术方法)
- python面向对象开发 2 类的方法
- 结构化开发方法&面向对象开发方法
- js面向对象开发(四) 其他引用类型(encodeURI 、encodeURIComponent编码,eval方法 ,escape unescape 给汉字转码 )
- python通过面向对象程序设计方法 实现铅球运行轨迹的计算
- 01章 面向对象开发方法概述
- 《软件工程-原理,方法,与应用》-面向对象开发笔记
- 面向对象开发方法之统一建模语言(UML)
- python ——面向对象进阶(反射,双下线方法,静态方法,类方法)
- Python 面向对象开发(二)类继承
- java学习笔记《java面向对象编程》——面向对象开发方法概述
- Python面向对象操作使用方法,10年经验教你!
- python面向对象开发(类的属性-精讲
- 关于python——面向对象开发
- Python 面向对象开发(一)
- 面向对象开发方法
- python面向对象开发(继承)
- Python面向对象高级编程:@property--把方法变为属性
- Python开发基础-Day22反射、面向对象进阶
- python面向对象开发视频1 (类 对象 属性)