python 面向对象 新式类和经典类
# 经典类写法
# schoolMember.__init__(self, name, age, sex) # 新式类写法
super(Teather, self).__init__(name, age, sex)
class schoolMember(object):
'''学校成员分类'''
member = 0 def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex self.enroll() # 实例化时候 自动注册 def enroll(self):
'''注册'''
print("just enrolled a new school member [%s]" % self.name)
schoolMember.member += 1 def tell(self):
print("%s info".center(40, "-") % self.name) for i in self.__dict__: # 循环字典 t1.__dict__
print("\t", i, self.__dict__[i]) print("End".center(40, "-")+"\n") def __del__(self): # 析构函数
print("开除了 [%s]" % self.name)
schoolMember.member -= 1 class Teather(schoolMember):
'''教师类''' def __init__(self, name, age, sex, salary, course): # 经典类写法
# schoolMember.__init__(self, name, age, sex) # 新式类写法
super(Teather, self).__init__(name, age, sex) self.salary = salary
self.course = course def teaching(self):
print("tearcher [%s] is teaching [%s]" % (self.name, self.course)) class Student(schoolMember):
'''学生类''' def __init__(self, name, age, sex, course, tuition): super(Student, self).__init__(name, age, sex) self.course = course
self.tuition = tuition
self.amount = 0 def pay_tuition(self, amount):
print("student [%s] has just paied [%s]" % (self.name, amount))
self.amount += amount t1 = Teather("mike", 28, "F*M", 10000, "python")
s1 = Student("jianlin", 21, "N/A","pythons15", 100000)
s2 = Student("mayun", 12, "M", "pythons15", 210000) print(schoolMember.member) t1.tell()
s1.tell()
s2.tell() del s1
print(schoolMember.member)
del s2
print(schoolMember.member)
del t1
print(schoolMember.member) '''
just enrolled a new school member [mike]
just enrolled a new school member [jianlin]
just enrolled a new school member [mayun]
3
----------------mike info-----------------
name mike
age 28
sex F*M
salary 10000
course python
------------------End------------------- ----------------jianlin info-----------------
name jianlin
age 21
sex N/A
course pythons15
tuition 100000
amount 0
------------------End------------------- ----------------mayun info-----------------
name mayun
age 12
sex M
course pythons15
tuition 210000
amount 0
------------------End------------------- 开除了 [jianlin]
2
开除了 [mayun]
1
开除了 [mike]
0
'''
class Person(object): # 新式类
super class Person: # 经典类
Person.__init__() 现在主要写新式类
python 面向对象 新式类和经典类的更多相关文章
- Python之面向对象新式类和经典类
Python之面向对象新式类和经典类 新式类和经典类的继承原理: 在Python3中,就只有新式类一种了. 先看Python3中新式类: 类是有继承顺序的: Python的类是可以继承多个类的,也就是 ...
- python之继承、抽象类、新式类和经典类
一.上节补充1.静态属性静态属性 : 类的属性,所有的对象共享这个变量 如果用对象名去修改类的静态属性:在对象的空间中又创建了一个属性,而不能修改类中属性的值 操作静态属性应该用类名来操作 例1:请你 ...
- python中新式类和经典类的区别
1).python在类中的定义在py2-3版本上是使用的有新式类和经典类两种情况,在新式类和经典类的定义中最主要的区别是在定义类的时候是否出现引用object;如:经典类:Class 类名::而新式类 ...
- Python新式类与经典类的区别
1.新式类与经典类 在Python 2及以前的版本中,由任意内置类型派生出的类(只要一个内置类型位于类树的某个位置),都属于“新式类”,都会获得所有“新式类”的特性:反之,即不由任意内置类型派生出的类 ...
- python中的__new__与__init__,新式类和经典类(2.x)
在python2.x中,从object继承得来的类称为新式类(如class A(object))不从object继承得来的类称为经典类(如class A()) 新式类跟经典类的差别主要是以下几点: 1 ...
- Python 新式类与经典类
新式类,经典类 查询匹配 广度查询 横着对每个类进行查询 深度查询 无视平级类,直接寻找下级类 #python 3.0 #新式类 广度查询 #经典类 广度查询 #python 2.0 #新式类 广度查 ...
- 面向对象【day07】:新式类和经典类(八)
本节内容 1.概述 2.类的多继承 3.经典类VS新式类 4.总结 一.概述 在python还支持多继承,但是一般我们很少用,有些语言干脆就不支持多继承,有多继承,就会带来两个概念,经典类和新式类,下 ...
- python中新式类和经典类
python中的类分为新式类和经典类,具体有什么区别呢?简单的说, 1.新式类都从object继承,经典类不需要. Python 2.x中默认都是经典类,只有显式继承了object才是新式类 Pyth ...
- Python新式类和经典类的区别
@Python新式类和经典类的区别 class ClassicClass(): pass class NewStyleClass(object): pass x1 = ClassicClass() x ...
- Python类总结-继承-子类和父类,新式类和经典类
子类和父类 class Father(object): #子类在使用super调用父类时,Father后面要加object --新式类 def __init__(self): self.Fname = ...
随机推荐
- React Native(九)——实现仿微信朋友圈发表动态功能
好像很久都没写博客了,罪过罪过~ 许是因为刚接触App有点生疏不得窍门吧,这个月还没有更新过文章.小个把月下来,还是觉得应该边学边总结,这样才能像大神靠近(最近刚接触同业的大牛级人物,还是从中学到了很 ...
- 项目适配iOS9遇到的一些问题及解决办法(更新两个小问题)
本文转载至 http://www.bubuko.com/infodetail-1110714.html http://www.jianshu.com/p/631bd7f12a38 1.网络请求报错.升 ...
- Lua 迭代器与closure
所谓“迭代器”就是一种可以遍历(iterate over)一种极和中所有元素的机制.在Lua中,通常将迭代其表示为函数.每调用一次函数,即返回集合中的“下一个”元素.每个迭代器都需要在每次成功调用之间 ...
- UIImageView的contentMode属性
UIViewContentMode 都有哪些值: typedef NS_ENUM(NSInteger, UIViewContentMode) { UIViewContentModeScaleToFil ...
- PL/SQL Developer的安装以及与64位Oracle Database进行连接
本文转载自budongs 一.下载 官网安装包(1106版本)下载链接: plsqldev1106.exe 官网中文语言包(110版本) 下载链接: chinese.exe [中文语言包的使用方法为: ...
- Visual C++中去除警告
在编程中,编译器警告的意思是提问程序员:如果这样做将会出现意外的错误,你确定要这样做吗? 在很多情况下,我们写程序的时候会出现一些警告,而这些警告我们都知道这样做的确是需要的并且程序中多处出现这种做法 ...
- C语言预处理命令详解
一 前言 预处理(或称预编译)是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作.预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置. 预处理是C语言的一个重要功能 ...
- WP8.1学习系列(第二十章)——添加控件和处理事件
先决条件 添加控件 设置控件的名称 设置控件属性 创建事件处理程序 新控件 总结 相关主题 通过使用如按钮.文本框和组合框等控件,你可以创建应用的 UI. 下面将显示如何将控件添加到应用.处理控件时, ...
- PHP魔术变量和魔术方法
基础知识:魔术变量和魔术方法 魔术变量:最初PHP魔术变量的出现主要是为了方便开发者调试PHP的代码;当然也可以利用这个实现特殊需求.在写法上魔术变量前后都有两个下划线. 如:_LINE_:返回文件中 ...
- @OneToMany、@ManyToOne以及@ManyToMany讲解
一.一对多(@OneToMany)1.单向一对多模型假设通过一个客户实体可以获得多个地址信息.对于一对多的实体关系而言,表结构有两种设计策略,分别是外键关联和表关联.(1) 映射策略---外键关联在数 ...