python自学1

在看python的视频资源自学
学了一点后觉得还是写点东西好,以后自己回顾也有东西看

面向对象

1. _del_方法:

class dog:
     def _del_(self):
             print("over")
dog1=dog()
dog2=dog1

del dog1
print("啊")

这一段代码的输出是这样的

啊
over

然鹅当代码改为

class dog:
     def _del_(self):
             print("over")
dog1=dog()
dog2=dog1

del dog1
del dog2
print("啊")

输出结果就变成

over
啊

原因是系统在调用_del_方法之前有其他调用dog1的语句
(即引用计数大于0)

第一次的代码:
在dog1=dog()时引用计数为1
dog2=dog1时引用计数为2
下方del dog1后引用计数为1
再往下无语句调用dog1——系统退出程序——即引用计数为0——调用_del_函数

结论:在程序中引用计数为0(即无语句调用时或者被删除后)时,_del_函数会被自动调用

如何查看一个对象的引用计数呢?
代码为

import sys
sys.getrefcount(x)

使用方法

import sys

class X:
     pass
x=X()
sys.getrefcount(x)     

上述代码所得结果为2
但根据观察代码可知这个引用计数应该为1
查阅资料得知:
这个数=真实引用计数+1

在删除x对象后再测一次

del x
sys.getrefcount(x)

结果是name ‘x’ is not defined
so。。。

2.继承

创建不同类之后(如创建了A,B两个类)`

class A:
     def eat(self):
         print('吃饭')
class B:
     def drink(self):
         print('喝水')         

如果A类中的功能,B类也同样有
那么可用继承的方法

class A:
     def eat(self):
         print('吃饭')
class B(A):
     def drink(self):
         print('喝水')  

即在定义类B的时候在B后加个(A)
表示B是A的子类,A是B的父类

父类下是子类,可无线套娃

*class a
class b(a)
class c(b)
class d(c)
。。。

功能上,d能用a、b、c三个类的功能,还能有d类自己独有的功能

!!注意!!(“重写”功能)
子类中可以写一个与父类中功能名相同的功能来重新定义这个功能,程序执行时会优先考虑子类自己的功能

class a:
     def eat(self):
         print('吃东西')
class b(a):
     def eat(self):
         print('要恰饭的嘛')   

意义:便于更改与更新功能

⭐调用被重写的原方法
方法一

class a:
     def eat(self):
         print('吃东西')
class b(a):
     def eat(self):
         print('要恰饭的嘛') 
         a.eat(self)

最后一行代码a.eat(self)即完成对父类中eat功能的调用
注意!!!:self不可省略

方法二

class a:
     def eat(self):
         print('吃东西')
class b(a):
     def eat(self):
         print('要恰饭的嘛') 
         super().eat()

同样也是最后一行代码完成对父类中eat功能的调用
但不同的是要调用super()功能来实现
优点为可省略self
^ ^嘻嘻
day1结束
2020/1/21/9:30

python自学1python自学1 愚懦 发布了1 篇原创文章 · 获赞 0 · 访问量 26 私信 关注
上一篇:我们遗忘的一些极富于语义的HTML标签


下一篇:Python3动态添加属性,删除属性,判断属性函数