10、类
10.1 类的定义
面向过程:根据业务逻辑从上到下写代码,强调的是每一步都得亲自完成
面向对象:将数据和函数一起封装,减少重复代码,绝对相信一个人,很多操作我让他代替我执行.
10.2 类的表达形式
类的名称:类名,大驼峰式命名规则,类名跟在class后面
类有属性:一组数据(静态数据)
类的方法(函数):对其的一些操作(行为)
例子:
狗:
类名:DOG
属性:品种、毛色、性别、名字、尾巴、腿儿个数
方法:跑、叫、咬人、拆家、吃饭
10.3 类的案例
class DogInfo(object):
def __init__(self,leg):
#初始化操作,定义的是属性,实例属性
self.leg = leg
def bark(self):
print('狗会叫')
注意点:
1、self这个形参,代表的就是实例对象,在使用的过程中进行自动调用
2、在init这个魔法方法里面,定义的都是实例的属性
3、DogInfo()创建的是实例化对象,注意,此刻init方法会被自动调用,如果init需要除了self以外的参数,在此刻的()中,需要直接传递
10.4 通过类创建实例
实例 = 类名()
注意点:
如果有init需要传参,那么()填写init的参数
10.5 调用实例的属性
10.5.1 在类的内部
class DogInfo(object):
def __init__(self,leg):
#初始化操作,定义的是属性,实例属性
self.leg = leg
def bark(self):
#在方法中调用实例属性
print(self.leg)
print('狗会叫')
注意点:
在方法中调用的实例属性,self.属性名调用,因为self指向的就是实例
10.5.2 在类的外面调用
class DogInfo(object):
def __init__(self,leg):
#初始化操作,定义的是属性,实例属性
self.leg = leg
def bark(self):
#在方法中调用实例属性
print(self.leg)
print('狗会叫')
在类的外面调用:
1、创建实例
dog = DogInfo(4)
2、调用属性
dog.name
注意点:
在类的外部,通过创建对象来调用实例属性
10.6 通过实例调用方法
10.6.1 在类的外面调用方法
class DogInfo(object):
def __init__(self,leg):
#初始化操作,定义的是属性,实例属性
self.leg = leg
def bark(self):
#在方法中调用实例属性
print(self.leg)
print('狗会叫')
dog = DogInfo(4)
dog.bark()
注意点:
通过实例调用
如果方法需要传参,在方法的()里面直接写入实参
####10.6.2在类的内部调用方法
class DogInfo(object):
def __init__(self,leg):
#初始化操作,定义的是属性,实例属性
self.leg = leg
def bark(self):
#在方法中调用实例属性
print(self.leg)
print('狗会叫')
def use_bark(self):
self.bark()
dog = DogInfo(4)
dog.use_bark()
注意点:
在类的内部调用,也是通过self.方法名()
10.7 动态增加临时属性并且获取
class DogInfo(object):
def __init__(self,leg):
#初始化操作,定义的是属性,实例属性
self.leg = leg
def bark(self):
#在方法中调用实例属性
print(self.leg)
print('狗会叫')
dog1 = DogInfo(4)
dog1.name = '小白'
print('临时属性的访问',dog1.name)
dog1.bark()
注意点:
1 关于实例属性与临时属性区别
实例属性是只要通过当前类创建的实例对象,都具有的
临时属性,是一个实例具有的,其他实例对象可有可无
2、在写web的时候,可能会为了方便起见,加的
10.8 init new方法
@staticmethod # known case of __new__
def __new__(cls, *more): # known special case of object.__new__
""" Create and return a new object. See help(type) for accurate signature. """
pass
def __init__(self): # known special case of object.__init__
""" Initialize self. See help(type(self)) for accurate signature. """
pass
注意点:
1、new方法创建并且返回新实例对象
2、init方法完成实例的初始化
3、new先用
10.9 str
class DogInfo(object):
def __init__(self,leg):
#初始化操作,定义的是属性,实例属性
self.leg = leg
def bark(self):
#在方法中调用实例属性
print(self.leg)
print('狗会叫')
dog1 = DogInfo(4)
print(dog1)
展示:
<__main__.DogInfo object at 0x0000000002859C50>
使用str
class DogInfo(object):
def __init__(self,leg):
#初始化操作,定义的是属性,实例属性
self.leg = leg
def bark(self):
#在方法中调用实例属性
print(self.leg)
print('狗会叫')
def __str__(self):
return '狗'
dog1 = DogInfo(4)
print(dog1)
展示:
狗
注意点:
return 字符串,’’