python 类


判断是否为子类
isinstance(对象,classinfo )
如果object参数是classinfo 参数的实例,或者是(直接,间接或虚拟)子类的实例,则返回true 。如果object不是给定类型的对象,则该函数始终返回false。如果classinfo是类型对象的元组(或递归,其他此类元组),则如果object是任何类型的实例,则返回true 。如果classinfo不是类型和类型元组的类型或元组,TypeError则会引发异常。

issubclass(class,classinfo )
如果class是classinfo的子类(直接,间接或虚拟),则返回true 。类被认为是其自身的子类。classinfo可以是类对象的元组,在这种情况下,将检查classinfo中的每个条目。在任何其他情况下,都会引发异常。TypeError

import math
class calc():
pi=3.1415926
def circle_area(self,r):
s=self.pi*math.pow(r,2)
print(s)

def calc(self):
a, b, c = 2, 3, 4
d = a + b + c
print(d)
c=calc()
c.circle_area(10)
class calcw(calc):
def div(self,a,b):
if b!=0:
c=a/b
else:
print("被除数不能为零")
return c
print(issubclass(calcw,calc))
c=calc()
print(isinstance(c,calc))

多重继承

class xiaoxiaozhang(xiaozhang,xiaohong):
def say():
print('我要上学')

继承

class xiaoxiaozhang(xiaozhang):
def say():
print('我要上学')

类变量 定义在类里面的变量 下面的pi就是类变量

import math
class calc():
pi=3.1415926
def circle_area(self,r):
s=self.pi*math.pow(r,2)
print(s)
c=calc()
c.circle_area(10)

局部变量 定义在方法里面的变量 calc方法中的a、b、c就是局部变量

import math
class calc():
pi=3.1415926
def circle_area(self,r):
s=self.pi*math.pow(r,2)
print(s)

def calc(self):
a, b, c = 2, 3, 4
d = a + b + c
print(d)
c=calc()
c.circle_area(10)

构造函数与析构函数
__init__ 和__del__
__init__是对变量的初始化,指当实例化一个对象(创建一个对象)的时候,第一个被自动调用的方法,未手动添加构造函数时,系统会默认提供一个无参的构造函数。
__del__
1、程序执行结束,会自动调用析构函数
2、使用del 删除对象的时候,系统会自动调用析构函数
3、如果没写析构函数,当符合析构函数调用的契机时,系统会自动调用父类的析构函数

class Person():
def run(self):
print("run")

def eat(self, food):
print("eat "+food)

def __init__(self, name, age, height, weight):
self.name = name
self.age = age
self.height = height
self.weight = weight

def __del__(self):
print("析构函数被调用了")

per = Person("hanmeimei", 20, 170, 55)
#释放对象
del per
#注意:对象释放后就不能再进行访问了

#在函数里定义的对象,会在函数结束时自动释放,这样可以用来减少内存空间的浪费
#其实就是作用域的问题
def func():
per2 = Person("aa", 1, 1, 1)

func() 

输出:
析构函数被调用了
析构函数被调用了
私有变量、保护变量、全局变量
变量前面在加一个下划线成为保护变量 作用域限于本类和子类
变量前面加两个下划线叫私有变量 作用域限于本类
各种推导式
列表推导式

a_list=[a for a in range(0,100,2) if a%2==0 ]

字典推导式

words='letter'
a_dict={word:word.count(word) for word in words}

集合推导式

squared = {x**2 for x in [1, 1, 2]}

生成器推导式

ge=(a for a in range(1,100,2) if a%2!=0)
print(ge)

输出
<generator object <genexpr> at 0x00000243D6DA6B48>
先要输出内容可以进行遍历打印或者转成list

ge=(a for a in range(1,100,2) if a%2!=0)
print(ge)
li=list(ge)
print(li)
本文为个人的实际操作经验之谈,转载、复制请注明出处,谢谢!
原文地址:https://www.cnblogs.com/zhouxudong/p/9507138.html