class Rectangle(): # 有没有括号都行 .
def __init__(self,x,y):
self.x=x
self.y=y def getPeri(self):
return (self.x+self.y)* def getArea(self):
return self.x*self.y rect=Rectangle(,) print('这个长方形的周长是'+str(rect.getPeri())) print('这个长方形的面积是'+str(rect.getArea())) class A:
def __init__(self):
return 'A of A-Cup' a=A() # __init__ should return NONE not 'str'
 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
这个长方形的周长是14
这个长方形的面积是12
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/new.py", line , in <module>
a=A()
TypeError: __init__() should return None, not 'str'
>>>

尴尬的是  就看不懂下面的啥东西 ....(更加尴尬的是 , 看了看又会了 .)

 class CapStr(str):
def __new__(cls,string): # 在 一个对象实例化的时候 第一个被调用的方法 .
string=string.upper() # 她的第一个参数就是 , cls 也就是这个类.# new 需要返回一个实例对象
return str.__new__(cls,string)
#return super().__new__(cls,string) # 在将 传入的string 变为大写之后 让 str开始处理 . 并返回 这是一个很聪明的处理方法. a=CapStr('I Love FishC.Com')
print(a)
# 将 new重写 , 将string 处理完毕之后 再调用原来的str的new
# 在子类中重写某一方法的时候 希望父类的该方法不消失 , 那么就要使用 第四行或者第五行的方法了.

.

 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
I LOVE FISHC.COM!
>>>

补充 .

 str1='jack'
print(id(str1))
str1='JACK'
print(id(str1))
print('------------不是一个地址的-----很明显不是同一个变量.---------')
num=
print(id(num))
num+=
print(id(num))
 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============

 ------------不是一个地址的-----很明显不是同一个变量.---------

 >>> 

析构函数 .

 >>> class C:
def __init__(self):
print('我是__init__方法,我被调用了 ...')
def __del__(self):
print('我是__del__方法 ,我被调用了 ...') >>> a=
SyntaxError: invalid syntax
>>>
>>>
>>> a=C()
我是__init__方法,我被调用了 ...
>>> b=a
>>> def a
SyntaxError: invalid syntax
>>> del a
>>> del b
我是__del__方法 ,我被调用了 ...

----------------------------------------------------------------------------------------------------------------------------------

class New_int(int):   # 定义一个新的类  继承 int 类
def __add__(self,other): # 重写 + 运算符 # __add__ 就是 int 中 + 的行为
return int.__sub__(self,other) # 重写的 加法运算符 调用 int类 里面的 减法运算运算符 def __sub__(self,other):
return int.__add__(self,other) # 上面的是一个小小的恶作剧 . 把加法和减法的名称进行了互换.
 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
>>> 5+6
11
>>> a=5
>>> b=6
>>> a+b
11
>>> c=New_int(7)
>>> d=New_int(10)
>>> c+d
-3
>>> a=New_int(a)
>>> b=New_int(b)
>>> a+b
-1
>>> # 由于没有初始化 int 类型的 等于运算符 所以只好 用 a=New_int()了 .

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 #   下面这个程序 是用来 看看思维如何的 . 看你能不能找出问题 .

 class Try_int(int):
def __add__(self,other):
return self+other def __sub__(self,other):
return self+other # 这里重载了 int类 的加法和减法 . 但是重载的时候 出了问题 . 没有给加法赋予正确的意义 .
# 在这里只是说 +法 到时候调用加法 . 这样就形成了无穷的递归/
 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
>>> a=5
>>> b=6
>>> a+b
11
>>> 5+6
11
>>> a=Try_int(5)
>>> b=Try_int(6)
>>> a+b
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
a+b
File "C:/Users/Administrator/Desktop/new.py", line 16, in __add__
return self+other
File "C:/Users/Administrator/Desktop/new.py", line 16, in __add__
return self+other
File "C:/Users/Administrator/Desktop/new.py", line 16, in __add__
return self+other .
.
.
.
File "C:/Users/Administrator/Desktop/new.py", line 16, in __add__
return self+other
File "C:/Users/Administrator/Desktop/new.py", line 16, in __add__
return self+other
File "C:/Users/Administrator/Desktop/new.py", line 16, in __add__
return self+other
RecursionError: maximum recursion depth exceeded
>>>

至于上述 为什么 必须先将 一个变量用 自己定义个类先声明(a=New_int(5).....)一下呢?

这是因为在这里 + 有不同的意思 有的是int类的+,有的是你自己定义的类的 + . 当开始相加的时候 系统会根据变量的数据类型去掉用相应的加法 ,

这就是为什么要 这样做了(a=New_int(5).....)

Python ~~~ 面向对象的利器的更多相关文章

  1. python 面向对象终极进阶之开发流程

    好了,你现在会了面向对象的各种语法了,  但是你会发现很多同学都是学会了面向对象的语法,却依然写不出面向对象的程序,原因是什么呢?原因就是因为你还没掌握一门面向对象设计利器, 此刻有经验的人可能会想到 ...

  2. 5.15 python 面向对象的软件开发&领域模型

    1.面向对象的软件开发 参考地址::http://www.cnblogs.com/linhaifeng/articles/6182264.html#_label14 面向对象的软件工程包括下面几个部: ...

  3. python 面向对象初级篇

    Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...

  4. Python 面向对象 基础

    编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...

  5. python面向对象进阶(八)

    上一篇<Python 面向对象初级(七)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  6. python 面向对象(进阶篇)

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  7. python 面向对象编程学习

    1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...

  8. Python面向对象详解

    Python面向对象的"怜人之处" Python的待客之道--谁能进来 Python的封装--只给你想要的 Python的继承--到处认干爹 Python的多态--说是就是

  9. python 面向对象和类成员和异常处理

    python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial di ...

随机推荐

  1. 《Java程序设计》学期总结

    <Java程序设计> 学期总结 课程设计小组 -迦瓦栈队 团队博客 读书笔记汇总 第一周 第二周 第三周 第四周 第五周 第六周 第七周 第八周 第九周 第十周 实验报告汇总 实验一 实验 ...

  2. JavaWeb基础: 会话技术简介

    会话技术 用户使用Web应用的过程实际是调用了一系列的Servlet来组合处理请求,从而完成整个业务流.不同Servlet组合起来为用户服务的时候就会遇到一个数据共享和传输的问题,如何让多个Servl ...

  3. hdu 4034 Graph (floyd的深入理解)

    Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others)Total Submi ...

  4. iOS开发之——从零开始完成页面切换形变动画

    前言 某天我接到了UI发给我的两张图: 需求图.png 看到图的时候我一脸懵逼,显然我需要做一个页面切换的指示动画.老实说,从大三暑假开始做iOS开发也一年有余了,但是遇到复杂动画总是唯恐避之不及,只 ...

  5. jdbc URL中的各个参数详解

    常用的有两个,一个是gjt(Giant JavaTree)组织提供的mysql驱动,其JDBC Driver名称(Java类名)为:org.gjt.mm.mysql.Driver 详情请参见网站:ht ...

  6. Objective-C:@property参数详解

    格式:@property(param1, param2) 类型 属性名 参数可有可无 三类参数: 1.读写属性:readwrite/readonly readwrite:产生setter\getter ...

  7. TreeList用法(1)

    本人按照网上搜的一些小用法整理的: 如果要出现左边的效果,代码如下: public DataTable CreateDataTable()        {            DataTable ...

  8. S1:运算符

    中括号和小括号的用法: 一般而言,对象中的属性的值是通过点(.)运算符来取值,但是考虑到这样一种情况,我们在遍历一个对象的时候,对其中的属性的键(key)是一无所知的,我们怎么通过点(.)来访问呢?这 ...

  9. PHP后台

    一.ajax提交表单 先引入ajax.js function ajax(url, fnSucc, fnFaild) { //1.创建Ajax对象 var oAjax=null; if(window.X ...

  10. bzoj 2143: 飞飞侠

    #include<cstdio> #include<iostream> #include<queue> #define inf 1000000000 #define ...