文档章节

Python面向对象

borey
 borey
发布于 2015/02/10 15:05
字数 643
阅读 46
收藏 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()


© 著作权归作者所有

共有 人打赏支持
上一篇: Python元类
下一篇: 防御式编程
borey
粉丝 27
博文 55
码字总数 31182
作品 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
你真的了解Python吗?这篇文章让你了解90%

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

博客园
05/21
0
0
【简明 Python 教程】学习笔记【Python简介及基本概念】

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

donhui
2014/11/27
0
0
掌握面向对象编程本质,彻底掌握OOP

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

bigstone2012
07/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux如何查看进程、杀死进程、启动进程等常用命令

关键字: linux 查进程、杀进程、起进程 1.查进程 ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括其他用户的程序。 ps -A 显示所有程序。 ps c 列出程序时,显示每个程...

临江仙卜算子
4分钟前
0
0
ASP.NET Core MVC 静态文件配置

在启动文件中添加以下配置 public class Startup{ public IServiceProvider ConfigureServices(IServiceCollection services) { services.AddDirectoryBrowser(); ......

whltian
14分钟前
0
0
linux之自定义命令

本人使用的是ubuntu系统,不喜欢建各种桌面快捷链接,但是每次启动个软件,去查找又麻烦,所以自定义了命令,来快捷的启动应用: 1、修改/etc/bash.bashrc,在文件末尾,加上如下List-1中的内...

克虏伯
22分钟前
3
0
linux基础

系统安全 sudo su chmod setfacl 进程管理 w top ps kill pkill pstree killall 用户管理 id usermod useradd groupad userdel 文件系统 mount umount fsck df du 网络应用 curl telnet mail......

关元
23分钟前
2
0
Caffe-源码分析(一)

CHECK_X函数,用于比较两个blob之间的值 CHECK_EQ(x,y)<<"x!=y",EQ即equation,意为“等于”,当x!=y时,函数打印出x!=y。 CHECK_NE(x,y)<<"x=y",NE即not equation,意为“不等于”,,...

Pulsar-V
24分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部