Python高级之面向对象(四)

最近的忙碌,进阶比较缓慢
前面的三篇主要讲Python的基础部分,第四篇为Python高级部分面向对象

记录点

面向对象-封装(2019-8-22)

  • 类 - class
  • 对象
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差不多

类变量和实例变量(2019-8-26)

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

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

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

print(self.__class__.name)  #调用类变量 方式1
Student.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

面向对象-继承(2019-8-28)

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

父类

#父类  2019-8-28
class 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)

面向对象-多态(- - -)

...


完整代码获取: 点击此处.


github地址:RemainderTime.
个人博客地址:梦麟繁花(ps:还在完善中...)
简书:RemainderTime
网易云音乐ID: remaindertime


扑向未来!
加油

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • 定义类并创建实例 在Python中,类通过 class 关键字定义。以 Person 为例,定义一个Person类...
    绩重KF阅读 3,948评论 0 13
  • 抽象类 什么是抽象类 与java一样,python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的...
    go以恒阅读 607评论 0 3
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,744评论 0 10
  • 适合在一主多从的情况下,主服务器宕机后,提升从服务器为主的情况下: 1、选择知道master最多的slave做为主...
    温东阅读 458评论 0 0
  • 三哥是我最喜欢的三哥。他不仅长得帅,还拥有一身健硕的肌肉,帅呆了妹妹,帅惊了哥哥。 三哥年轻时是个了不起的全国摔跤...
    Duzy阅读 574评论 0 2