文档章节

Python面向对象

borey
 borey
发布于 2015/02/10 15:05
字数 643
阅读 41
收藏 1

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
博文 55
码字总数 31182
作品 0
深圳
程序员
【简明 Python 教程】学习笔记【Python简介及基本概念】

Python的特色:简单、易学、免费开源、高层语言、可移植性、解释性、面向对象、可扩展性、可嵌入性、丰富的库。 Ctrl-d退出提示符; Ctrl-z再按Enter。 复数。 标示符的命名: 标示符是用来标...

donhui
2014/11/27
0
0
Python3快速入门——(1)python变量和输入输出函数

1、Python语言 Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言 Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。 Python 是交互式...

飞天小橘子
03/14
0
0
走进Python世界(一)入门介绍

什么是Python Python是一种解释性,面向对象的,带有动态语义的高级程序设计语言。它能够使你在编程时能够保持一种简洁易懂的风格,不用过多考虑功能实现的。 Python的几个重要阶段 CNRI 时期...

Garrry
2015/07/16
0
0
Fedora 14下配置Python开发环境

pythone新闻1则 Python十分适合解决很多简单的、有趣的问题,比用C语言要省力的多。(这是实话,几行Python代码你就能制作一个简单的拼写检查程 序。)你会发现这种语言里几乎没有任何复杂或让...

墙头草
2011/03/29
0
1
你真的了解Python吗?这篇文章让你了解90%

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

博客园
05/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
2
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
114
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
4
0
我为什么用GO语言来做区块链?

Go语言现在常常被用来做去中心化系统(decentralised system)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。 我们在决定做Karachain的时候,考量(b...

HiBlock
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部