码迷,mamicode.com
首页 > 编程语言 > 详细

小甲鱼Python笔记(类)

时间:2015-09-21 15:49:28      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:

类和对象

类的构造方法 def __init__():

1 class People:
2     def __init__(self,name):
3         self.name = name

 

技术分享

注意:在构造方法中的变量不用再次声明,必须有self,创建类的对象是用=

 

类的私有成员

让方法或者类变为私有,只要在它的名字前加上双下划线

1 class People:
2     __name = ‘laowang‘
3     def getname(self):
4         return self.__name

 

技术分享

注意:类的私有成员可以通过方法访问,也可以通过   _类名__私有成员这种格式来访问

 

类的继承

class 子类(父类、基类、超类)

在继承构造函数的过程中,可以用以下两个方法,推荐方法2:

(1)调用未绑定的父类构造方法

1 class People:
2     def __init__(self):
3         self.name = ‘aa‘
4 class Student(People):
5     def __init__(self):
6         People.__init__(self)
7         self.son = 20

(2)使用super

class People:
    def __init__(self):
        self.name = ‘aa‘
class Student(People):
    def __init__(self):
        super().__init__()
        self.son = 20

 super可以不带任何参数,但是当父类中有参数传入,super后的__init__要加上参数而且不能加上self

1 class People:
2     def __init__(self,name):
3         self.name = name
4 class Student(People):
5     def __init__(self,name,sno):
6         super().__init__(name)
7         self.name = name
8         self.sno = sno

 

技术分享

 

类的组合

类之间没用明显继承关系可以用组合,比如一个电话簿的类由电话和地址类组合起来:

 1 class Tel:
 2     def __init__(self,x):
 3         self.info = x
 4 
 5 class Add:
 6     def __init__(self,y):
 7         self.info = y
 8 
 9 class Notebook:
10     def __init__(self,x,y):
11         self.tel = Tel(x)
12         self.add = Add(y)
13     def print_info(self):
14         print("Tel:%s\nAdd:%s" %(self.tel.info,self.add.info))

技术分享

 

类 类对象 实例对象

技术分享

技术分享

类对象就像C++中的static变量,一个对象有了实例对象后就将类对象的值覆盖了

属性名如果和方法名相同,属性会覆盖方法 

 

绑定

对象.__dict__返回对象拥有的属性

技术分享

对象调用后方法绑定到实例对象上del类后,a的方法还是存在的,因为A的方法和属性都是static,程序退出前不会消失

技术分享

 

一些和类相关的BIF

issubclass(class, classinfo)

技术分享
isinstance(object, classinfo)

技术分享
hasattr(object, name)  注意第二个参数要用字符串格式

技术分享
getattr(object, name[, default])

技术分享
setattr(object, name, value)  设置属性

delattr(object, name)     删除属性,属性不存在抛出异常 

技术分享

小甲鱼Python笔记(类)

标签:

原文地址:http://www.cnblogs.com/raichen/p/4826231.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!