[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.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...
随机推荐
- WCF - Home
https://www.tutorialspoint.com/wcf/index.htm WCF Tutorial WCF stands for Windows Communication Found ...
- zepto-touch.js插件
/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */(function(global, factory) { if ( ...
- db2查看当前用户模式及当前用户的权限
1.连接数据库:db2 connect to appdb 2.查询当前用户模式:select current schema from sysibm.sysdummy1 或 select current ...
- mysql 5.6多库并行复制原理
首先,要开启这个并行复制,需要设定slave_parallel_workers参数,这个参数如果设定成0的话代表不使用并行,relaylog由sql线程执行,表现和之前版本一致.当这个参数设置成n时, ...
- oracle体系结构基础
摘自:http://jianshi-dlw.iteye.com/blog/1554892 Oracle的体系结构大体上分为两部分:Instance(实例)和Database(数据库). Instanc ...
- windows系统下,在C#程序中自动安装字体
在Windows系统中,原有自带的字体样式有限,有时候我们的程序会使用到个别稀有或系统不自带的字体.因此我们需要将字体打包到程序中,当程序启动时,检测系统是否有该字体,如果没有则安装该字体,也可以动态 ...
- python 调用C++ DLL,传递int,char,char*,数组和多维数组
ctypes 数据类型和 C数据类型 对照表 ctypes type C type Python type c_bool _Bool bool (1) c_char char 1-character ...
- 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第5节 String类_1_字符串概述和特点
在api中查找 java.lang包里面的不用引用
- gradle implementation runtimeOnly 和api 区别
implementation 不对外开发,只是本项目依赖. runtimeOnly 运行时才依赖 api 可以传递依赖,别的项目也可以依赖api的jar包.
- [9期]软WAF上传绕过+webshell免杀
安全狗上传绕过 思路: 1.扰乱编码 form-data 替换成 ~form-data form-data 改成 f+orm-data form-data 改成 for ...