Python类和对象的学习笔记
本文章是作者在学习python的过程中的学习笔记,如果有错误请提醒
#本文档用于记录python class 的学习笔记(参考小甲鱼的视频进行学习)
一、Class
1. class = 属性+方法;
2. self 相当于c++中this指针:
class ball:
speed = 50
def setname(self, name):
self.name = name
3. class的方法:
(1)__init__(self),构造方法
在实例化对象的时候,这个方法就会自动调用例如:
class ball:
def __init__(self,name):
self.name = name
可以加入默认参数:
def __init__(self,name = 'qhsjtc'):
self.speed = 0
self.high = 0
self.quality = 0
这里一定要注意初始化参数的时候要用self
4.共有和私有
(1)共有
class ball:
name = '足球'
(2)私有
class ball:
__name = '足球' #这样只能通过调用方法
但是可以通过: b._ball__name来访问 (b实例化对象)
二、继承
1.例如
class Mylist(list),Mylist 继承了list,
注意:子类重写初始化方法(或者调用父类的方法):
(1)调用未绑定的父类方法():
class Shark():
def __init__(self):
Fish.__init__(self): #需要注意这个self
self.hungry = True
(2)使用super函数:
class Shark():
def __init__(self):
super().__init__(): #不需要传入self(这里有点疑问)
self.hungry = True
2.多重继承:
class Student(Person, boy, girl):
三、组合
1.例子:
class Turtle:
def __init__(self, x):
self.num = x
class Fish:
def __init__(self, x):
self.num = x
class Pool:
def __init__(self, x, y):
self.turtle = Turtle(x)
self.fish = Fish(y)
四、mixin:
https://blog.csdn.net/u012814856/article/details/81355935
五、BIF(内置函数)
1. issubclass(class, classinfo) #classinfo 可以是类对象组成的元组,只要class与其中任何一个候选类的子类,则返回True
2. isinstance(object, classinfo) #检查object 是否属于classinfo
第二个参数不 是类或者由类对象组成的元组,会抛出一个TypeError异常
3. hasattr(object, name) #查看对象中否有这个属性注意
例如:
hasattr(Person,'score') #一定要有字符串的标志
4. getattr(object,name[, default]) #得到属性的值
例如:
getattr(Pesrson, 'high', '您所访问的属性不存在')
5. setattr(object, name, value) #设定对象中指定属性的值,如果指定属性不存在,他会新建一个属性
例如:
setattr(Person, 'high', 5)
6. delattr(object, name) #删除对象中指定属性,如果属性不存在,则返回AttributeError
delattr(Perso, 'high')
7. property(fget = None, fset = None, fdel = None, doc = None) #利用属性设置属性
例如: #要传入方法
class C:
def __init__(self, size = 10):
self.size = size
def getSize(self):
return self.size
def setSize(self):
self.size = value
def delSize(self):
del self.size
x = property(getSize, setSize, delSize)
c1 = C()
c1.x = 18
del c1.x #这样可以直接对x进行操作