美文网首页
day25面向对象封装\隐藏\绑定\非绑定方法

day25面向对象封装\隐藏\绑定\非绑定方法

作者: 荭鲤鱼与緑鲤鱼与驴 | 来源:发表于2020-08-08 17:54 被阅读0次

第一个特性:封装
封,字面意思;封,封口,只留下一个对外展示的接口
装,将一些数据或功能集合在一起
隐藏
在类中如果在一个属性名前加上,就可以属性隐藏起来(无论的类调用还是直接调用均无法看到)
其实开头的属性会被修改(
类名
属性名),在类外部调用的时候可以使用此方法调用
在类内部使用仍是
属性名的方法,也就是说该隐藏是对外不对内的
该隐藏操作是在类的定义阶段扫描语法时发生的变形,类定义之后添加的
_开头的属性不会发生变形
把功能属性隐藏起来的目的就是来隔离复杂度
class Student:
school = 'oldboy'

def __init__(obj, x, y, z):
    obj.__name = x
    obj.age = y
    obj.gender = z

def get_name(self):
    return self.__name

def set_name(self, name):
    self.__name = name
    return self.__name

def del_name(self):
    del self.__name
  # peoperty 功能  在外界直接操作最新变量name
name = property(get_name, set_name, del_name)  # 三个功能集成到一个变量名内
  # 集查询,修改,删除与一身

obj = Student('egon', 19, 'male')

print(obj.name) # 查询名字
obj.name = 'tank' # 修改名字
print(obj.name) # 修改后的名字查看
del obj.name # 删除名字
装饰器
上方代码的功能看着不够清晰,name太多容易让人混乱,python就有一个很好用的东西:装饰器
class Student:
school = 'oldboy'

def __init__(obj, x, y, z):
    obj.__name = x
    obj.__age = y
    obj.gender = z

@property   # 查询操作在被隐藏功能上方加 @property 装饰器即可
def age(self):
    return self.__age

@age.setter   # 修改操作需要下方变量名.setter
def age(self, name):
    self.__age = name
    return self.__age

@age.deleter  # 删除操作需要下方变量名.deleter
def age(self):
    del self.__age

 # 此处无需再将三个功能赋值给新变量名,但需要函数名统一

obj = Student('egon', 19, 'male')
print(obj.age) # 查询年龄
obj.age = 20 # 修改年林
print(obj.age) # 修改后的年龄查看
del obj.age # 删除年龄
绑定方法
类中定义的函数:谁来调用就会将谁当成第一个参数传入
绑定给对象的方法:类中定义的函数默认是绑定给对象用的,应该由对象来调用,会将对象当成第一个参数传入
绑定给类的方法:再类中的函数加上一个装饰器@classmethod,那么该函数就绑定给类了,应该由类来调用,会把类当成第一个参数传入(对象仍可用,但是只能用非绑定的函数)
非绑定方法:既不与类绑定又不与对象绑定,就是一个存在于类中的普通的函数,直接通过函数名来调用,谁都可以来调用,没有自动传参的效果@staticmethod
class People:
def init(self, name, age):
self.name = name
self.age = age

def tell_info(self):
    print('%s:%s' % (name, age))

@classmethod
def f2(cls):
    print(cls.f1(234, 234, 324))  # 类来调用,将类当成参数传入,可调用类中的非绑定f1函数

@staticmethod
def f1(x, y, z):
    print(x, y, z)

obj = People('egon', 18)
People.f2() # 类来调用绑定给类的方法f2
People.f1(12, 34, 56) # 非绑定的方法f1,类可直接调用
obj.f1(34, 34, 45) # 非绑定的方法f1,对象可直接调用
obj.f2() # 对象仍可调用绑定给类的方法f2,类来调用,纯粹是可以用,没什么实际用

相关文章

  • day25面向对象封装\隐藏\绑定\非绑定方法

    第一个特性:封装封,字面意思;封,封口,只留下一个对外展示的接口装,将一些数据或功能集合在一起隐藏在类中如果在一个...

  • Python-面向对象2

    今日内容 面向对象的三大特性 封装 继承与派生 多态与多态性 绑定方法与非绑定方法 内置的方法 元类 异常处理 内...

  • 面向对象:多态,封装,绑定与非绑定方法

    面向对象第二大特性:多态 一类事物的多种形态 动物的多种形态:人,狗,猪 文件的多种形态:文本文件,可执行文件 1...

  • Java基础(二)

    面向对象特征;重载和重写;静态绑定和动态绑定;抽象类和接口;包。 面向对象的特征 面向对象的三个基本特征是:封装、...

  • java 复习

    一、面向对象相关 1、面向对象三大特征 1、封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通...

  • 26.绑定方法

    一、绑定方法与非绑定方 1). 类内部定义的函数,分为两大类: 绑定方法 (对象实例方法、类实例方法) :绑定给谁...

  • 01-java的基础入门

    java是面向对象编程 1.封装、继承、多态 1.封装: 封装是把数据和操作数据的方法绑定起来,对数据的访问只能通...

  • #Thinking In Java-绑定

    标签(多态): 绑定:将一个方法调用同一个方法主题关联起来 前期绑定:函数调用在编译时就确定,多出现在非面向对象的...

  • 类面对对象、封装 继承 多态

    Python——类、面向对象,封装 继承 多态 面向过程:根据业务逻辑从上到下写代码面向对象:将数据与函数绑定到一...

  • 面向对象封装dom节点和封装方法绑定

    乐视TV( Letv) S50 Air 全配版 50英寸2D智能LED液晶 超级电视 各地区货源已陆续到库,我们将...

网友评论

      本文标题:day25面向对象封装\隐藏\绑定\非绑定方法

      本文链接:https://www.haomeiwen.com/subject/guihdktx.html