[python 学习] 类
#!/usr/bin/python
# -*- encoding:utf-8 -*-
class Animal:
animal_num = 0 class Dog(Animal):
#类帮助文档
'this is help'
#两个下划线开头,类的私有属性,不能在类外部访问,类内部使用self.__dog_name访问
__Dog_name = 'dahuang'
dog_num = 0
#累的构造函数,初始化实例时调用
def __init__(self, name, color):
self.color = color
self.name = name
Dog.dog_num += 1 #类变量在内部类中调用 #self代表类的实例,类内部的函数必须包含且第一个参数为 self
def prt(self):
print self
print self.__class__ #self不是python关键字,可以使用其他代替
def prt_2(self_2):
print self_2
print self_2.__class__ def printDogName(self):
print self.name #__private_method类的私有方法,调用self.__private_method
def __get_Dog_name(self):
return self.__Dog_name def get_Dog_name(self):
return self.__get_Dog_name() #输出对象实例时调用(print)
#或使用str(obj)调用
def __str__(self):
return 'print 时调用' #repr(obj)
def __repr__(self):
return '直接输出对象,使用print打印时调用,或repr(obj)' # 析构方法
def __del__(self):
print '对象被删除' #实例化
d = Dog('jack','red') #同 print d
str(d)
#同 print d
repr(d)
#调用析构方法
# del d d.prt()
d.prt_2() print d.get_Dog_name() #dahuang #_foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import * #通过 object._className_attrName访问累的私有变量
print d._Dog__Dog_name #dahuang
#放问类的私有方法同上
print d._Dog__get_Dog_name() #dahuang #添加属性
d.age = 10
#修改属性
d.age = 12
# del删除属性
del d.color #使用函数操作属性
hasattr(d,'age') #如果存在 ‘age’ 属性返回 true
getattr(d, 'age') #返回 ‘age’ 属性的值
setattr(d, 'age', 13) #添加属性 ‘age 的值为13
delattr(d, 'age') #删除属性 'age' #内置类属性
#__dict__:类的属性
#{'__module__': '__main__', 'printDogName': <function printDogName at 0x02B3B9B0>,
# 'prt_2': <function prt_2 at 0x02B3B970>, 'prt': <function prt at 0x02B3B8F0>,
# 'dog_num': 1, '__doc__': 'this is help', '__init__': <function __init__ at 0x02B3B9F0>}
print Dog.__dict__ #__name__:类名
#Dog
print Dog.__name__ #__module__:类定义所在的模块
#__main__
print Dog.__module__ #__bases__:类的所有父类构成的元素
#(<class __main__.Animal at 0x038AABC8>,)
print Dog.__bases__ #打印类说明
print Dog.__doc__
[python 学习] 类的更多相关文章
- day24 python学习 类  画元,命名空间作用域,组合,人狗大战升级
		
类命名空间与对象.实例的命名空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类有两种属性:静态属性和动态属性 静态属性就是直接在类中定义的变量 动态属性就 ...
 - python学习|类和实例
		
什么叫实例对象呢?大家可以想象一下,[类]就像工厂的模具,以它为模板,造出来的成千上万的产品,才是被我们消费.购买.使用,真正融入我们生活的东西.这些产品,在Python中就叫[实例对象]. 往深了说 ...
 - Python学习-类
		
类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化 在python中,一个对象的特征也称为属性(attribute),它所具有的的行为也称为方法(method) 对象 = 属性(特征)+方法(行 ...
 - python学习-类属性和实例属性
		
#类属性和实例属性 class Tool(object): #类属性 total = 0 #静态方法 @classmethod def say(self): print("hello wor ...
 - day23 python学习 类  人狗大战
		
面向过程 VS 面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 面向过程 优点是:极大的降低了 ...
 - python学习-类的继承
		
1.继承的语法 2.多继承 3.override(子类重写父类的方法) 4.子类调用父类中被重写的实例方法 5.使用super函数调用父类的构造方法
 - Python学习笔记(十五):类基础
		
以Mark Lutz著的<Python学习手册>为教程,每天花1个小时左右时间学习,争取两周完成. --- 写在前面的话 2013-7-24 23:59 学习笔记 1,Python中的大多 ...
 - Python学习 Part7:类
		
Python学习 Part7:类 1. 作用域和命名空间 命名空间(namespace)就是一个从名称到对象的映射. 命名空间的一些实例:内置名称集(函数,像abs(),和内置异常名称),一个模块中的 ...
 - python学习笔记4_类和更抽象
		
python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...
 
随机推荐
- 关于Java泛型实现原理的思考与一般用法示例总结
			
面向对象的一个重要目标是对代码重用的支持.支持这个目标的一个重要机制就是泛型机制.在1.5版本之前,java并没有直接支持泛型实现,泛型编程的实现时通过使用继承的一些基本概念来完成的. 这种方式的局限 ...
 - Linux_DNS服务器
			
目录 目录 DNS DNS Server ServerSite Master DNS Server Forward Domain Reverse Resolution Slave DNS Server ...
 - vue组件通信之父子组件通信
			
准备工作: 首先,新建一个项目,如果这里有不会的同学,可以参考我转载过的文章 http://www.cnblogs.com/Sky-Ice/p/8875958.html vue 脚手架安装及新建项目 ...
 - 结合element-ui封装的一个分页函数
			
第一次写博客,专门写给菜鸟看的,如果你是老鸟,你可以直接无视. 首先我们从豆瓣api获取到电影的数据列表 然后我们把他们切成一块一块的小数组 最后的数组将会是这样 原理就是以上的内容,接下来直接附上 ...
 - TCP通信 - 服务器开启多线程与read()导致服务器阻塞问题
			
TCP通信的文件上传案例 本地流:客户端和服务器和本地硬盘进行读写,需要使用自己创建的字节流 网络流:客户端和服务器之间读写,必须使用Socket中提供的字节流对象 客户端工作:读取本地文件,上传到服 ...
 - PHP中的异常和错误(转载)
			
博客好久没有更新了,实在惭愧,最近在忙人生大事,哈哈!这段时间没有看什么新的东西,结合项目中遇到的PHP异常处理问题,我又重新梳理了之前模糊的概念,希望对大家理解PHP异常处理有所帮助. 请一定要注意 ...
 - mysql : 使用不等于过滤null的问题
			
在写sql时遇到查询结果不对的情况,经查阅,发现是因为查询条件过滤null的问题:从网上找到如下资料: 在写SQL 条件语句是经常用到 不等于‘!=’的筛选条件,此时要注意此条件会将字段为null的数 ...
 - spring-data-redis的使用/redis缓存
			
1.导入依赖 <properties> <junit.version>4.12</junit.version> <spring.version>4.2. ...
 - Codeforces 601B(贪心+斜率+组合数学+单调栈)
			
题面 传送门 题目大意: L(h)的值是区间[L,R]内,abs(h[i]-h[j])/(i-j)的最大值.现在有q个询问,每个询问表示询问区间[L,R]内,所有子序列的L(h)的值的和 分析 将|h ...
 - 教你使用Python制作酷炫二维码
			
这篇文章讲的是如何利用python制作狂拽酷炫吊炸天的二维码,非常有趣哦! 可能你见过的二维码大多长这样: 普普通通,平平凡凡,没什么特色... 但,如果二维码长这样呢! 或者 这样! 是不是炒鸡好看 ...