文档章节

python学习之 python对象

m
 merph
发布于 2016/10/25 20:03
字数 834
阅读 41
收藏 0

关于python 对象的定义

class <类名>:
 <语句>

类的私有属性和方法 :

类的私有属性:
  __private_attrs  两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs
类的方法
  在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数
私有的类方法
  __private_method 两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用slef.__private_methods

类的专有方法:
__init__  构造函数,在生成对象时调用
__del__   析构函数,释放对象时使用
__repr__ 打印,转换
__setitem__按照索引赋值
__getitem__按照索引获取值
__len__获得长度
__cmp__比较运算
__call__函数调用
__add__加运算
__sub__减运算
__mul__乘运算
__div__除运算
__mod__求余运算
__pow__称方

class people:
	'定义人类'
	#定义基本属性
	name = ''
	age = 0
	#定义私有属性
	__weight = 0
	#定义构造函数
	def __init__(self,n,a,w):
		self.name = n
		self.age = a
		self.__weight = w
	def speak(self):
		print("%s is speaking :I am %d years old and my weight is %d" %(self.name,self.age,self.__weight))
	def __del__(self):
		print("This is del")
p = people('Tom',10,30)
print(p.name) # Tom
p.speak() #Tom is speaking :I am 10 years old and my weight is 30

类的继承

面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。继承完全可以理解成类之间的类型和子类型关系。

需要注意的地方:继承语法 class 派生类名(基类名)://... 基类名写作括号里,基本类是在类定义的时候,在元组之中指明的。

在python中继承中的一些特点:

  • 1:在继承中基类的构造(__init__()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。
  • 2:在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别于在类中调用普通函数时并不需要带上self参数
  • 3:Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。

如果在继承元组中列了一个以上的类,那么它就被称作"多重继承" 。

语法:

派生类的声明,与他们的父类类似,继承的基类列表跟在类名之后,如下所示:

class SubClassName (ParentClass1[, ParentClass2, ...]):
   'Optional class documentation string'
   class_suite

关于构造函数:

1、如果子类中没有定义 def __init__(),则会调用父类的构造函数。

2、如果子类中定义了构造函数,则会自动覆盖父类的构造函数。

3、如果想调用父类的构造函数,则需要加上 parent.__init__(self,***)。

关于方法的重写:

class Parent:        # 定义父类
   def myMethod(self):
      print '调用父类方法'

class Child(Parent): # 定义子类
   def myMethod(self):
      print '调用子类方法'

c = Child()          # 子类实例
c.myMethod()         # 子类调用重写方法

 

© 著作权归作者所有

m
粉丝 0
博文 21
码字总数 12761
作品 0
北京
程序员
私信 提问
加载中

评论(1)

大肥船
大肥船
写得不错啊
python是如何进行内存管理的

Python引入了一个机制:引用计数。 python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要...

糖宝lsh
2018/12/14
0
0
看书 Python 源码分析笔记 (三) dict

今天继续从第五章开始学习. 第五章 Python 中的 Dict 对象 这是 python 提供的关联容器, 即 key,value 对映射, python 使用 hash table 的方式实现此关联容器. (也有别的实现方式, 如 STL 中...

刘军兴
2015/12/21
0
0
看书 Python 源码分析笔记 (二)

第二章 Python 中的整数对象 初识 PyIntObject 对象 整数被创建为 PyIntObject (类)的实例. 整数对象是一种不可变对象 (immutable), 即一旦创建, 该对象内部的那个 ival 值不变化. Python 中...

刘军兴
2015/12/18
0
0
Python对象持久化学习整理

随着项目的深入,python对象持久化问题也随之而来。而在这之前,对于python对象持久化还停留在pickle时代,而这已无法满足当前项目发展的需要了,于是只好借助google疯狂的学习了一把,同时也...

索隆
2012/05/24
0
0
520来啦~教你用Python给自己造了一个女朋友

520这一天,也是网络情人节。就在那天,如果没有女朋友的自己,如何假装自己是有朋友的!如何在朋友圈“秀恩爱。 女生版: 很有感觉有木有~~ 男生版: 其实这些都是小意思啦~~ 这些都是假装自...

急速奔跑中的蜗牛
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

typescript 接口 函数类型 可索引类型

函数类型 可索引类型 数字索引签名 字符串索引签名 数字索引签名返回值 必须是 字符串索引签名返回值的子集 只读索引签名

lilugirl
今天
3
0
Oracle SQL语法实例合集

如需转载请注明出处https://my.oschina.net/feistel/blog/3052024 目的:迅速激活Oracle SQL 参考:《Oracle从入门到精通》 ------------------------------------------------------------......

LoSingSang
今天
2
0
增加 PostgreSQL 服务进程的最大打开文件数

https://serverfault.com/questions/628610/increasing-nproc-for-processes-launched-by-systemd-on-centos-7 要在systemd的配置里加才行...

helloclia
今天
2
0
组合模式在商品分类列表中的应用

在所有的树形结构中最适合的设计模式就是组合模式,我们看看常用商品分类中如何使用。 先定义一个树形结构的商品接口 public interface TreeProduct { List<TreeProduct> allProducts(...

算法之名
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部