python装饰、类(构造,私有化字段,封装方法)

本文深入探讨了面向对象编程的基础概念,包括类、对象、继承等,并详细讲解了装饰器的工作原理及其应用实例。同时介绍了如何利用装饰器增强函数功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

'''
面向对象编程
     继承:多继承
     类中所有的__开头的方法都是内置的来自于父类
  对象
     创建对象和调用函数一样
  方法
      类方法
      对象方法
      构造方法
      静态方法
'''

#装饰 	装饰器其实就是一个以函数作为参数并返回一个替换函数的可执行函数。
	#这一篇博客对装饰解释的很好,如果不是很明白的话,可以考虑看下  http://python.jobbole.com/85056/
import types
def shucai(n):
    print("蔬菜:7")
    if  type(n) == types.FunctionType:
            return n()+7
    return n + 7
def yangrou(n):
    print("羊肉:38")
    if  type(n) == types.FunctionType:
            return n()+38
    return n+38

@shucai #类似注解的感觉
@yangrou
def mala():
    print("麻辣:15")
    return 15
print(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")




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值