类与类之间的关系
1.依赖关系(一个对象当另一个对象的参数)  关系最浅,

 特殊成员:
1. 类名() 会自动调用 __init__()
class Foo: def__init__(self, name):
self.name = name
self.age = 18
obj = Foo('wupeiqi')# 自动执行类中的 __init__ 方法 2. 对象()或者 类名()() 会自动调用 __call__()
3. 对象[key] 会自动调用 __getitem__()
4. 对象[key]=value 会自动调用 __setitem__()
5. del 对象[key] 会自动调用 __delitem__()
6. 对象+对象 会自动调用 __add__()
7. wiht 对象 as 对自动调用 __enter__和__exit__
8. 打印对象的时候会自动执行 __str__
9.干掉hash __hash__=None 就不可hash了
10.查看类信息 __doc__
class Foo(object):
"""这里描述类的信息"""
def func(self):
pass
print(Foo.__doc__) #这里描述类的信息
11.表示操作的对象是什么类型 __class__
12.查看当前对象在那个模块 __module__
13.python解释器在垃圾回收自动执行 __del__
14.获得类或对象的全部信息,以字典形式返回
__dict__
15.如果一个类中定义了__str__方法,
那么在打印 对象 时,默认输出该方法的返回值。
class Foo:
def__str__(self):
return'wupeiqi'
from lib.ss import a
#示例类 dog
class doges(object):
"""类的描述信息"""
def __init__(self,name,food):
self.name=name
self.food=food
self.data={}#定义一个类的字典
def __call__(self, *args, **kwargs):#对象后面加括号解执行
print(*args)
def __str__(self):#默认输出返回值
return self.name
def __getitem__(self):#可以获取类的的字典
return self.data
def __setitem__(self, key, value):#可以设置类的的字典
self.data[key]=value
def __delitem__(self, key):#可以删除类的字典的内容
del self.data[key]
dog=doges('xxx','iii')
print(dog.__doc__)
b=a()
print(b.__module__)#操作的对象的那个模块
print(dog.__class__)#当前操作的对象的类是什么
dog('')#
print(doges.__dict__)#查看类或对象的成员 类只打印类的成员不打印对象的成员
print(dog.__dict__)#查看类或对象的成员 对象只打印对象的成员不打印类的成员
print(dog)#打印 __str__的返回值
print(dog.__str__())#打印返回值 dog['']=1000#触发.__setitem__()
dog['']=1000#触发.__setitem__()
print(dog.__getitem__())
print(dog.__delitem__(''))#删除类中字典
print(dog.__getitem__()) #设置类的特殊方法
def func(self):
print('hello word%s'%self.name)
print() def __init__(self,name,age):
self.name=name
self.age=age
##type参数 1:类名 2.类的基类 3.类的成员,字典格式
CAT=type('CAT',(object,),{'func':func,'__init__':__init__}) cat=CAT('喵喵',3)
cat.func()
print(cat.name,cat.age)
#定义 一个新方法
def bulk(self):
print("%s is talking...."%self.name) class DOG(object):
def __init__(self,name):
self.name=name
def eat(self,food):
print('%s is eating %s'%(self.name,food)) d=DOG('一只狗') stres=input('方法:').strip()#手动输入方法 if hasattr(d,stres):#通过字符串反射对象中的方法,是否存在
func=getattr(d,stres)#调用此方法
func("骨头")#执行方法
else:
setattr(d,stres,bulk)#对象增加一个方法 返回一个内存地址
getattr(d,stres)(d)#调用此方法 增加的
#d.talk(d)
#属性修改
stres1=input('属性:').strip()#手动输入属性
if hasattr(d,stres1):#如果已经存在
attr=getattr(d,stres1)#调用
a=input('重新赋值:').strip()
setattr(d,stres1,a)
print(getattr(d,stres1))
else:
a=input('新赋值:').strip()
setattr(d,stres1,a)#对象增加一个属性 ,赋值 返回这个属性的值
print(stres1)
print(getattr(d,stres1)) print(d.__dict__)
dela=input('删除属性:').strip() if hasattr(d,dela):#如果已经存在
delattr(d,dela)#进行删除
print('删除成功') print(d.__dict__)

day16 类之间的关系 特殊成员的更多相关文章

  1. python --- 18 类与类之间的关系, 特殊成员

    类与类之间的关系 一.依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作      随时可以更换另外一个东西来完成此操作 此时的关系是最轻的. 二.关联关系(组合关系,聚合关系) 1.一对 ...

  2. python 类与类之间的关系. 特殊成员

    一.类与类之间的关系 1.依赖关系 在方法的参数位置把另一个类的对象作为参数进行传递 class Person: def play(self, tools): # 通过参数的传递把另一个类的对象传递进 ...

  3. 从零开始学C++之RTTI、dynamic_cast、typeid、类与类之间的关系uml

    一.RTTI Run-time type information (RTTI) is a mechanism that allows the type of an object to be deter ...

  4. java 类与类之间的关系 及uml图

    类与接口之间的关系 : 继承 类与类之间的关系 :继承关系  包含关系 类与对象之间的关系 : 实例 UML 类图中类与类之间的关系: 泛化关系(generalization) 关联关系(associ ...

  5. python之路--类与类之间的关系

    类和类之间的关系 在我们的世界中事物和事物之间总会有一些联系. 在面向对象中. 类和类之间也可以产生相关的关系 1. 依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻 ...

  6. Day18--Python--面向对象--类与类之间的关系

    1. 依赖关系 在方法中引入另一个类的对象 (最不紧密的一种关系) 依赖关系都是把另一个对象当做参数 class Elephant: def __init__(self, name): self.na ...

  7. UML类图及类与类之间的关系

    原文地址:http://www.uml.org.cn/oobject/201211231.asp 类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的 ...

  8. python学习 day017打卡 类与类之间的关系

    本节主要的内容: 1.依赖关系 2.关联关系,组合关系,聚合关系 3.继承关系,self到底是什么? 4.类中的特殊成员 一.类与类之间的依赖关系 在面向对象的世界中,类与类中存在以下关系: 1.依赖 ...

  9. day18 类与类之间的关系

    今日所学内容: 1.类与类之间的关系 2.self 到底是谁? 3. 特殊成员 : 1.类与类之间的关系 在我们的世界中事物和事物之前总会有一些联系 在面向对象中,类与类之间也可以产生相关的联系 1) ...

随机推荐

  1. sql语句中的问号是干什么的???

    1.实例代码一: String sql = "SELECT userid,name FROM tuser WHERE userid=? AND password=?" ;  pst ...

  2. 基于C++任意点数的FFT/IFFT(时域和频域)实现

    函数说明:更改主函数体中的N和length(=log2(N))既可以实现任意点数(2的幂次)的FFT/ IFFT的实现,fft函数中flag标志位控制是正变换还是逆变换. 1.复数操作类      定 ...

  3. 使用myeclipse自动导入hibernate3的jar包,如何关联hibernate源码的解决办法

    1.在网上找了好久,今天终于解决了,如果你的myeclipse自动生成的添加hibernate3jar包时,依靠通常的方法是无法关联其相应版本的源代码的,就是你在编写代码是,按住ctrl + hibe ...

  4. [hdu1251]统计难题(trie模板题)

    题意:返回字典中所有以测试串为前缀的字符串总数. 解题关键:trie模板题,由AC自动机的板子稍加改造而来. #include<cstdio> #include<cstring> ...

  5. SpringBoot11 读取properties文件、发送邮件

    1 读取properties文件 1.1 ResourceBundle 帮助我们事先国际化 1.1.1 前提 properties文件的命名方式必须体现除语言和国别 例如:test_zh_CN.pro ...

  6. git 删除本地分支和远程分支

    (1)使用命令git branch -a 查看所有分支 其中,remote/origin/master表示的是远程分支 (2)删除远程分支 使用命令 git push origin --delete ...

  7. javascript字符串 转 驼峰字符

    字符串  转  驼峰字符 <script type="text/javascript"> var str = 'peng-hui-datou'; function a( ...

  8. 树莓派研究笔记(3)-- 安装VNC

    小屏幕太小了,眼睛快看瞎了,必须安装VNC 才行啊. 更新—2018-02-04 最新版本的系统中自带了VNC了,只需要在 菜单 Preferences -> Raspberry Pi Conf ...

  9. 数据结构_wow(泡泡的饭碗)

    问题描述 饱了吗终于发现泡泡破解了它的代码并借此白吃白喝.饱了吗当即改变了自己的幸运儿生成源码,但是,又被机智的泡泡偷瞄到了,机智的泡泡马上意识到可能要饭碗不保了:每当有人参与抽奖,这个人就进入队列. ...

  10. springMVC:modelandview,model,controller,参数传递

    转载:http://blog.csdn.net/wm5920/article/details/8173480 1.web.xml 配置: copy   <> ></> & ...