python装饰、类(构造,私有化字段,封装方法)
来源:互联网 发布:天文软件stellarium 编辑:程序博客网 时间:2024/06/03 16:19
'''面向对象编程 类 继承:多继承 类中所有的__开头的方法都是内置的来自于父类 对象 创建对象和调用函数一样 方法 类方法 对象方法 构造方法 静态方法'''
#装饰 装饰器其实就是一个以函数作为参数并返回一个替换函数的可执行函数。
#这一篇博客对装饰解释的很好,如果不是很明白的话,可以考虑看下 http://python.jobbole.com/85056/import typesdef shucai(n): print("蔬菜:7") if type(n) == types.FunctionType: return n()+7 return n + 7def yangrou(n): print("羊肉:38") if type(n) == types.FunctionType: return n()+38 return n+38@shucai #类似注解的感觉@yangroudef mala(): print("麻辣:15") return 15print(mala)#-----class python:类继承class per(a,b): 可以多继承,不支持实现,因为没有接口存在,都是类#-----class java:类继承class per extends a{}class per(): __name=None#私有化filed字段 (java中叫属性) python中以__修饰即可,java中 private String name
#建构造方法 def __init__(self,name): self.__name=name #python 中 java中 # def show(self): 可以修改 public void show(this){} 默认this隐藏,不可写 #python中的self即java中的this def show(self): print("名字为:"+self.__name)p=per("li")p.show()# print(p.__name)执行这行代码会报错,因为私有化字段不可被调用class ps : #python中不可存在多个构造函数 def __init__(self,fname,lname): self.__first_name=fname self.__last_name=lname @property # @property 可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/getter也是需要的
#将zh()方法转为zh属性,不然show方法中print zh()方法 def zh(self): return self.__first_name+'*'+self.__last_name @zh.setter def zh(self,zh): self.__first_name=zh[:zh.index("+")] self.__last_name=zh[zh.index("+")+1:] def show(self,s): print(self.zh,s) #print(propterty(zh),s)#ps.zh="wang+wu"通过@zh.setter调用def zh(self,zh)方法,该方法给self.__first_name,self.__last_name属性赋值#使用show方法 调用 def zh(self)方法,该方法将上述的self.__first_name,self.__last_name以*拼接起来#通过 @property 将zh()方法转为zh属性
ps=ps("zs","ls")ps.show("heh")ps.zh="wang+wu"ps.show("hah")
阅读全文
0 0
- python装饰、类(构造,私有化字段,封装方法)
- 构造方法私有化作用
- java构造方法私有化
- 构造方法私有化作用
- 构造方法私有化
- java构造方法私有化
- JAVA构造方法私有化
- 构造方法私有化
- java中构造方法私有化
- python基础(05)——类,对象,私有化封装,继承
- 单态模式小程序(构造方法私有化)
- 构造方法私有化 (单态设计模式)
- 构造方法私有化和单例模式
- 构造方法私有化及单态模式
- java代码中私有化构造方法
- Java面向对象基础--构造方法私有化
- 构造方法私有化---单例设计模式
- Java中构造方法私有化-->单态
- 扫盲系列之集群分布式简介
- SDUT2132--一般算术表达式转换成后缀式
- 机器学习在知乎:深度学习助力内容分析处理,智能问答产品或成未来目标
- Eclipse创建web工程项目
- bzoj1179 [Apio2009]Atm(tarjan缩点+spfa)
- python装饰、类(构造,私有化字段,封装方法)
- validate有一些使用心得
- 以太坊基础
- 面向工程师的机器学习简介:理论、算法、概念全覆盖
- ccf 权限查询
- Android中设定EditText的输入长度
- Android加载本地页,并与js互调详解
- Activity生命周期与View宽度的获取
- CodeForces