文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么定义Python面向对象

2023-06-02 03:25

关注

本篇内容介绍了“怎么定义Python面向对象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

面向对象

class Student(): #定义一个类 name = '' #定义变量 age = 0 def print_file(self): #定义一个方法 print("name:"+self.name) print('age:'+str(self.age)) #输出student =Student() #实例化一个对象student.print_file() #调用方法

【注】:self 在每个方法括号中都必须写上,这个相当于java中的 this 关键字。

但 self按严格来说它不是python的关键字,self可以是任何符合的字符串,只是python官方推荐使用 self 而已

类与对象:类像一个模板一样,可以产生各种各样的对象

 def __init__(self,name): #构造函数 self.name=name self.source= 0 print(name) #调用实例变量 方式1 print(self.name) #调用实例变量 方式2 print(self.__class__.name)#调用类变量 方式1

部分特性和java差不多

类变量和实例变量

实例变量:通过实例对象调用的变量和在构造函数中定义过的 如上述构造函数类代码

print(name) #调用实例变量 方式1print(self.name) #调用实例变量 方式2

类变量:通过类名直接调用的,或者在实例函数中使用 self.class.变量名调用的 如上述代码

print(self.__class__.name) #调用类变量 方式1Student.name #调用类变量 方式2

方法

实例方法

就是一般的定义方法,关联实例对象

def show(self):pass

【注】:关键字 pass 相当于一个占位 在还没想好逻辑的时候可以使用它 反正代码报错

类方法

方法上使用装饰器 @classmethod 以及必传参数 cls

#类方法@classmethod def plus_sum(cls): cls.sum +=1  print(cls.sum) #调用类变量

【注】: cls 字符串 和self的作用差不多,只是只能用在类方法上

在类方法中调用类变量的方式与实例方法不同

self.__calss__.name #实例方法调用类变量cls.name #类方法调用类变量

静态方法

方法上使用装饰器 @staticmethod,和类方法的区别就是不用传cls,一般不推荐使用

 #静态方法 @staticmethod  def plus_sum(): pass

要点:一般保证数据的安全不能直接给数据赋值,要在方法中进行完成,方法中可以进行判断,体现了python的面向对象的封装性

私有

私有方法

在方法前面加 ‘__’ 双下划线

def __sum(self):pass

私有方法外部强行调用会报错

私有变量

在变量前面加 ‘__’ 双下划线

__name = '小米'

无法进行私有变量调用,

student = Student() #实例化print(student.__name)

因为python的动态机制,这里其实是重新定义了一个变量 __name

可以使用 _dict _ 来查看当前对象的所以变量信息

print(student.__dict__) #输出详细

可以从输出的内容中可以看到,原来的变量变成了 类名加变量名 如:_Student__name

面向对象-继承

python的继承特性和java的继承特性差不多,相信有java继承的会更好的理解

父类

#父类 2019-8-28class Human(): sum = 0 def __init__(self,name,age): self.name=name self.age=age def show(self): print("父类的方法")

子类

from m4 import Human #导入父类 m4为文件名 Human为类名class Student(Human): #继承父类  def __init__(self,school,name,age): self.school=school  #调用父类的构造函数 需要加入self 方式一 Human.__init__(self,name,age) #方式二 使用super关键字 super(Student,self).__init__(name,age)  def out(self): #调用父类方法 super(Student,self).show() print("加油")ss = Student('社会','44',5)print(ss.name)print(ss.age)ss.out()

调用父类的两种方式

方式一

 #调用父类的构造函数 需要加入self 方式一 Human.__init__(self,name,age)

方式二

使用关键字 super

#方式二 使用super关键字super(Student,self).__init__(name,age)

“怎么定义Python面向对象”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯