博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象
阅读量:5008 次
发布时间:2019-06-12

本文共 1620 字,大约阅读时间需要 5 分钟。

class Person:    is_good_person = True # 类属性(优先找实例变量),虽然跟默认参数(__init__(self, name, sex, is_good_person = True))效果一样,但是更省内存    def __init__(self, name, sex):        self.name = name # 实例属性(静态属性),作用域是实例本身        self.sex = sex    def speak(self): # 类方法(动态属性)        print(666)

 

__init__  构造函数:在实例化的时候做一些类初始化的工作

__del__ 析构函数:在实例释放、销毁的时候(删除实例或者程序退出)自动执行的,通常用于做一些收尾工作,如关闭一些数据库连接,关闭打开的临时文件

 

vivi = Person('weiwei', 'girl')print(vivi.is_good_person)vivi.best_friend = 'Allen'# 虽然类本身没有这个属性,但这句话就相当于 self.best_friend = 'Allen',原因:# vivi = Person('weiwei', 'girl')  相当于 Person(vivi, 'weiwei', 'girl')# 所以类里面的 self.name = name 相当于 vivi.name = name# 同理 vivi.best_friend = 'Allen' 是有效的del vivi.best_friend # 删除实例变量

 私有属性,私有方法:只有内部才能访问的属性,方法,在属性名或方法名前面加两个下划线__

 

类的继承

class Hero(Person): # 继承Person类    def speak(self): # 重构父类的speak方法        Person.speak(self)        print("{} is hero!".format(self.name))me = Hero('Allen', 25)me.speak()# 输出# 666# Allen is hero!

 经典类与新式类

class Person: # 经典类class Person(object): # 新式类Person.__init__(name, age) # 经典类调用父类方法super(Hero, self).__init__(name, age) #新式类调用父类方法

 多继承的顺序是从左至右继承,实例化时会找到第一个构造函数执行,而不会执行每一个构造函数。

规则:

  Python2 经典类是按深度优先来继承,新式类是由广度优先来继承;

  Python3 经典类和新式类都是按照广度优先来继承。

多态

  一个接口,多种实现(作用:接口重用)。

class Person(object):    @staticmethod    def person_speak(obj):        obj.speak()class Hero(Person):    def speak(self):        print("I'm hero")class Badperson(Person):    def speak(self):        print("I'm bad person")h = Hero()b = Badperson()Person.person_speak(h)Person.person_speak(b) # 一个接口,多种实现 # 输出 # I'm hero # I'm bad person

 

转载于:https://www.cnblogs.com/allenzhang-920/p/9312229.html

你可能感兴趣的文章
iOS webView的常见属性和方法
查看>>
理解position:relative
查看>>
Codeforces Round #344 (Div. 2) Messager KMP的应用
查看>>
20145308刘昊阳 《Java程序设计》第4周学习总结
查看>>
js倒计时
查看>>
EasyUI datagrid 格式 二
查看>>
Android虹软人脸识别sdk使用工具类
查看>>
UI:基础
查看>>
浅谈 @RequestParam 和@PathVariable
查看>>
设计模式之---装饰器设计模式
查看>>
基于WordNet的英文同义词、近义词相似度评估及代码实现
查看>>
Equation漏洞混淆利用分析总结(上)
查看>>
js-倒计时自动隐藏
查看>>
shell学习1shell简介
查看>>
VM虚拟机下安装Centos7.0图文教程
查看>>
Javascript 汉字转拼音
查看>>
简单工厂模式
查看>>
Android(java)学习笔记205:JNI之编写jni程序适配所有处理器型号
查看>>
11.3 字典复习
查看>>
实用SQL
查看>>