首页 > 其他分享 >面向对象

面向对象

时间:2022-11-13 23:46:17浏览次数:80  
标签:status name self fight 面向对象 print def

类方法与静态方法

类方法:类方法通过@classmethod装饰器实现,类方法与普通方法的区别是,类方法只能访问类变量,不能访问实例变量。因为添加classmethod后,self不代表实例,而代表类本身,所以类方法可以直接用类去调用,也可以用实例对象去调用。

静态方法:静态方法不能访问类变量,也不能访问实例变量, 在类中使用 @staticmethod 来修饰的方法属于静态方法,静态方法不需要指定任何的默认参数,静态方法可以通过类和实例去调用,静态方法,基本上是一个和当前类无关的方法,它只是一个保存到当前类中的函数,静态方法一般都是一些工具方法,和当前类无关

class fun():
    n = 1
    def __init__(self,age):
        self.age = age
        pass
    @classmethod            #类方法
    def fun1(cls,name):
        print('i am classmethod',name,cls.n)
    @staticmethod       #静态方法
    def fun2():    #此处不能带self,因为不能访问类      变量或实例变量
        print('i am staticmethod')
a = fun(23)
fun.fun1('123')
a.fun2()

 

私有方法,私有变量

类中私有方法,和私有属性,外部无法访问,只能在类的内部访问,在方法前面添加__即可让该方法变成私有方法。私有变量也是类似。

class School():
    def __init__(self,name):
        self.name = name
    def __city(self):
        self.__address = '北京'
        print(self.__address)
    def call(self):
        self.__city()

sch = School('清华')
sch.call()

 

只读属性

@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改。

class Fight(object):
    def __init__(self,name):
        self.name = name
    def checking_status(self):
        print("connecting airline company api ...")
        print("checking fight %s status"%self.name)
        return 1 #1:到达 2:未到达
    @property
    def fight_status(self):     #get
        status = self.checking_status()
        if status == 0:
            print("fight got canceled...")
        if status == 1:
            print("fight is arriver")
        if status == 2:
            print("fight is not arriver")
    @fight_status.setter
    def fight_status(self,status):     #set
        print("changing...fight status",status)
        self.status = status
    @fight_status.deleter              #del
    def fight_status(self):
        print("del...")
f = Fight("A1292")
f.fight_status  #将fight_statu方法变为一种属性,不用加()即可调用
f.fight_status = 2  #正常情况下不能对该属性方法赋值,只能重新定义一个fight_status.setter的方法
del f.fight_status

 

 

 

标签:status,name,self,fight,面向对象,print,def
From: https://www.cnblogs.com/powfu/p/16887721.html

相关文章

  • python面向对象-继承
    对象继承单继承:即继承父类的属性方法 super()方法场景:既想用父类的__init__属性,又想用自己的__init__属性,如果不在子类中加这个函数,直接在子类写__init__,那么会重写父......
  • 《码出高效》Chapter2面向对象-读书笔记
    《码出高效Java开发手册》第2章面向对象OOP理念抽象封装继承多态抽象是程序员的核心素质之一,体现在对业务的建模能力,以及对架构的宏观掌控力。抽象是OO思想......
  • 面向对象的三大特征
    面向对象的三大特征封装该露的露,该藏的藏我们程序设计要求“高内聚,低耦合”,高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用......
  • 【java八股】面向对象三大特征
    封装:把客观事务封装成抽象的一个类,并且类可以通过4个修饰限制符,把自己的数据和方法只让可信的类或者是对象来操作,对不可信的进行信息隐藏,对数据提供了保护,保证数据的......
  • 15.面向对象
    面向对象面向对象(ObjectOrientedProgramming)几乎是目前所有主流语言所必备的特点。什么是面向对象呢?回答这个问题,需要先明白另一个问题:什么是对象?什么是对象程序的本......
  • 面向对象
    对象的内存:1.加载class文件2.申明局部变量3.在堆内存中开辟空间4.默认初始化5.显式初始化6.构造方法初始化7.将堆内存中的地址赋值给左边的变量printfSystem......
  • Java零基础-面向对象入门案例:宠物商店
    Java零基础-面向对象入门案例:宠物商店案例需求:设计宠物类,包含有:编号、名称、年龄、种类、性别、是否防疫等信息,设计宠物商店,实现宠物添加、删除、修改宠物信息,记录宠物......
  • [JavaScript-06]面向对象
    1.面向对象//大括号就是对象p={a:1,b:2,c:3,}//系统对象全部基于window//console.log(window);//window.alert(1);//alert(2);//console......
  • H5游戏开发-面向对象编程
    七、面向对象编程1.认识类与对象类是一种复杂的数据结构,他是将不同类型的数据与这些数据相关的操作封装在一起的集合体。对象是类的实例,是类描述的具体事物。(类是对象的......
  • 面向对象
    面向对象面向对象面向过程&面向对象面向过程思想步骤清晰简单,第一步做什么,第二步做什么。。。。面对过程适合处理一些较为简单的问题面向对象思想物以类聚,分类......