文档章节

Python面向对象

borey
 borey
发布于 2015/02/10 15:05
字数 643
阅读 40
收藏 1
点赞 0
评论 0

1,使用class Name(parent,...)关键字定义类

2,任何自定义类默认从object类继承

3,类的构造函数__init__和析构函数__del__

4,__slots__接受一个tuple,用于限制类属性,不会被继承

5,代码内提供两种属性访问器函数@property定义方式

6,以双下划线开头的变量和函数是私有的不能之间访问

7,父类构造函数__init__的调用方式有super(class, self).__init__(...)或在使用class.__init__(self,...)

8,子类继承或者覆盖父类的属性和成员函数,具有多态特性

9,@staticmethod定义静态方法 @classmethod定义类方法

10,类成员函数定义,默认第一个参数必须是self对象

11,可以访问内置类属性和重载内置成员方法和运算符

12,在Python里,一切皆对象!

#!/usr/bin/python
#-*- coding: utf-8 -*-

class Person(object):
	"""docstring for Person"""
	__slots__ = ('__name', '__age')
	def __init__(self, name, age):
		print 'Person __init__', name, age
		self.__name = name
		self.__age = age

	@property
	def name(self):
		return self.__name
	@name.setter
	def name(self, value):
		self.__name = value

	@property
	def age(self):
		return self.__age
	@age.setter
	def age(self, value):
		self.__age = value

	def say(self):
		print 'Hello, My Name is %s, My age is %d' %(self.__name, self.__age) 

	def __del__(self):
		print 'Person destruct!!!', self.__name

class Student(Person):
	"""docstring for Student"""
	def __init__(self, name, age, score):
		print 'Student __init__', name, age, score
		super(Student, self).__init__(name, age)
		self.__score = score

	@property
	def score(self):
		return self.__score
	@score.setter
	def score(self, value):
		self.__score = value

	def say(self):
		print 'Hello, I am a Student, My Name is %s, My age is %d, My score is %d' \
		%(self.name, self.age, self.__score)

	def info(self):
		print '__dict__ = ', self.__dict__
		print '__doc__ =  ', self.__doc__
		print '__module__ = ', self.__module__

	def __str__(self):
		return 'Student(%s, %d, %d)' %(self.name, self.age, self.__score)

	def __del__(self):
		print 'Student destruct!!!', self.name

class coding(object):
	"""docstring for coding"""
	def __init__(self, code):
		print 'coding __init__', code
		#super(coding, self).__init__()
		self.__code = code

	def work(self):
		print 'I am coding by', self.__code

	def __del__(self):
		print 'coding destruct!!!', self.__code

class Employer(Person, coding):
	"""docstring for Employer"""
	def __init__(self, name, age, code, salary, phone, address):
		print 'Employer __init__', name, age, code, salary, phone, address
		#super(Employer, self).__init__(name, age, code)
		Person.__init__(self, name, age)
		coding.__init__(self, code)
		self.__salary = salary
		self.__phone = phone
		self.__address = address

	def infomation(self):
		print 'My name is', self.name
		print 'My age is', self.age
		print 'My salary is', self.__salary
		print 'My phone number is', self.__phone
		print 'My address is', self.__address
		self.work()

	def __del__(self):
		print 'Employer destruct!!!', self.name

	def setSalary(self, value):
		self.__salary = value

	def getSalary(self):
		return self.__salary

	salary = property(getSalary, setSalary)

	@staticmethod
	def staticMethod():
		print 'staticmethod test!'
		
def main():
	#Person
	p = Person('ZhangSan', 20)
	print p.name
	print p.age
	print p.say()
	p.name = 'LiShi'
	p.age = 32
	print p.name
	print p.age
	print p.say()
	#Student
	s = Student('Wanwu', 18, 80)
	print s.name
	print s.age
	print s.score
	s.say()
	s.name = 'ZhaoLiu'
	s.age = 16
	s.score = 99
	s.say()
	s.info()
	print dir(s)
	print s
	#Employer
	e = Employer('Lilei', 26, 'Python', 8000, '123456789', 'China')
	e.infomation()
	e.salary = 8888
	e.infomation()
	Employer.staticMethod()

if __name__ == '__main__':
	main()


© 著作权归作者所有

共有 人打赏支持
borey
粉丝 26
博文 54
码字总数 31182
作品 0
深圳
程序员
你真的了解Python吗?这篇文章让你了解90%

  【IT168 评论】人们为什么使用Python?   之所以选择Python的主要因素有以下几个方面:   软件质量:在很大程度上,Python更注重可读性、一致性和软件质量,从而与脚本语言世界中的其...

博客园 ⋅ 05/21 ⋅ 0

云计算培训学院,云计算Python自动化运维开发实战

都忘记是什么时候知道python的了,我是搞linux运维的,早先只是知道搞运维必须会shell,要做一些运维自动化的工作,比如实现一些定时备份数据啊、批量执行某个操作啊、写写监控脚本什么的。后...

长沙千锋 ⋅ 05/15 ⋅ 0

Python是如何怼翻其他编程语言而窜上宝座的

来PK啊! 谁怕谁啊! 在过去的两年间,Python一路高歌猛进,成功窜上“最火编程语言”的宝座。 更可怕的是,这把火不仅仅是在程序员的圈子里越烧越旺,甚至还烧到了程序员的圈子外,从小学生...

超级数学建模 ⋅ 04/18 ⋅ 0

Python是面向对象的语言吗?python编程

  Python虽然是解释型语言,但从设计之初就已经是一门面向对象的语言,对于Python来说一切皆为对象。正因为如此,在Python中创建一个类和对象是很容易的,当然如果习惯面向过程或者函数的写...

老男孩Linux培训 ⋅ 06/08 ⋅ 0

Python和Ruby哪个工作好找?python开发学习

Ruby 和 Python十分相似,有很多共同点,但也有一些不同之外,以下是Python和Ruby的对比: 1. Python和Ruby都是面向对象的语言,都是动态和灵活的。二者的主要区别在于他们解决问题的方式。R...

老男孩Linux培训 ⋅ 05/28 ⋅ 0

你想要的Python面试都在这里了【315+道题】

写在前面 近日恰逢学生临近毕业,课程后期大家“期待+苦逼”的时刻莫过于每天早上内容回顾和面试题问答部分【临近毕业每天课前用40-60分钟对之前内容回顾、提问和补充,专挑班里不爱说话就的...

p柯西 ⋅ 06/12 ⋅ 0

Python基础面试题80问 Python自动化开发

为什么学习Python? 2. 通过什么途径学习的Python? 3. Python和Java、PHP、C、C#、C++等其他语言的对比? 4. 简述解释型和编译型编程语言? 5. Python解释器种类以及特点? 6. 位和字节的关...

zhouzhou2018 ⋅ 05/24 ⋅ 0

Python(1)——python安装和第一个程序

/============================ 以下所有内容,均来自 廖雪峰 的官方网站, python 教程。 链接地址:http://www.liaoxuefeng.com ============================/ python 简介 1、python 是一...

docallen ⋅ 2017/04/25 ⋅ 0

Python面向对象编程之我见

面向对象基本概念 面向对象是一种编程范式。范式是指一组方法论。编程范式是一组如何组织代码的方法论。编程范式指的是软件工程中的一种方法学。 一些主流的编程范式: OOP - 面向对象编程 ...

bigstone2012 ⋅ 05/31 ⋅ 0

程序员必备,快速学习 Python 的全套14张思维导图(附高清版下载)

后台回复关键词 思维导图 可获取本文中的高清思维导图(PDF版) ML & AI∣一个有用的公众号 长按,识别二维码,加关注 获取更多精彩文章

micf435p6d221ssdld2 ⋅ 05/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Kubeflow实战系列:利用TFJob导出分布式TensorFlow模型

介绍 本系列将介绍如何在阿里云容器服务上运行Kubeflow, 本文介绍如何使用TfJob导出分布式模型训练模型。 第一篇:阿里云上使用JupyterHub 第二篇:阿里云上小试TFJob 第三篇:利用TFJob运行...

全部原谅 ⋅ 3分钟前 ⋅ 0

007. 深入JVM学习—老年代

老年代空间的主要目的是用于存储由Eden发送来的对象,一般在经历好几次“Minor GC”还会保存下来的对象,才会被复制到老年代,这样就可以存放更多的对象,同时在老年代中执行GC的次数也相对较...

影狼 ⋅ 4分钟前 ⋅ 0

常见的一些C#开源框架或者开源项目

原:https://blog.csdn.net/qq_27825451/article/details/70666044 Json.NET http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更......

whoisliang ⋅ 5分钟前 ⋅ 0

设计模式基本原理

刚开始接触编程这行的时候看过设计模式,当时感觉学这些模式没有太大的用处,当时也看不太懂。但是随着慢慢接触这一行,经过一段时间的编程以后,再回过头来看设计模式,发现设计模式的确是太...

王子城 ⋅ 9分钟前 ⋅ 0

阿里云全面支持IPv6!一文揽尽4位大咖精彩演讲

摘要: 自从去年11月以来,阿里巴巴高度重视数据中心的网络改造、云产品改造、应用及网络改造等多个维度,经过半年以来的建设,阿里云已经完成了域名解析等关键产品的分析,现在阿里云已经完...

传授知识的天使 ⋅ 19分钟前 ⋅ 0

windows Android sdk 配置

1、下载Android SDK,点击安装,直接默认路径即可! 下载地址:http://developer.android.com/sdk/index.html 2、默认路径安装后,安装完成,开始配置环境变量。 3、打开计算机属性——高级系...

阿豪boy ⋅ 22分钟前 ⋅ 0

bash shell script 简明教程

User <--> bash <--> kernel shell is not kernel or part of kernel various shells: tcsh, csh, bash, ksh find the using shell: echo $SHELL find all the shells: cat /etc/shells what......

mskk ⋅ 24分钟前 ⋅ 0

Service Mesh简史

William Morgan Service Mesh是一个相当新的概念,讲它的“历史”似乎有些勉强。就目前而言,Service Mesh已经在部分企业生产环境中运行了超过18个月,它的源头可以追溯到2010年前后互联网公...

好雨云帮 ⋅ 24分钟前 ⋅ 0

10个免费的服务器监控工具

监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的。你要确保用户始终可以打开你的网站并且网速不慢。服务器监控工具允许你收集和分析有关你的Web服务器的数据。 有许多非常好的服...

李朝强 ⋅ 37分钟前 ⋅ 0

压缩工具之zip-tar

zip 支持目录压缩。使用yum安装zip包,使用yum安装unzip包 zip 1.txt.zip 1.txt #将1.txt文件压缩,新生成的压缩文件为1.txt.zip,原文件保留 zip -r 123.zip 123/ #-r对目录操作。将123/目录...

ZHENG-JY ⋅ 37分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部