Python 学习
第六天
1 》面向对象
(1)三大特性:
封装
继承
多态
(2)类:把一些事务的共同属性(变量)和行为(方法)定义在一个类
(3)方法:定义在类中的方法,其实指的是类的行为
(4)类变量:类变量是对所有对象共用的,定于在类中方法外,
(5)实例变量:每个对象独有的,定义在方法内部,使用self.变量
(6)局部变量:定义在方法中,在当前代码块中有效。
(7)实例化:创建一个类的实例,类的具体对象
(8)对象:通过类定义的数据结构实例,对象包括变量和方法
# 类的定义与使用
class person():
name = 'xiaowang'
age = 0
def eat(self):
print(self.name + "吃饭")
# 类对象的创建,从抽象到具体的过程
dd = person()
dd.name = 'dd';
dd.age = 12;
dd.eat()
2》构造方法
_init_(),构造方法,帮我们初始化实例变量的方法
不是显示写这个方法,其实也有,不过代码块为空
显示调用这个方法,就可以在构造一个对象,同时把实例变量初始一下
无参构造方法的第一个参数必须是self
self 代表类的实例(调用的当前对象)
# _init_(),构造方法,帮我们初始化实例变量的方法
# 不是显示写这个方法,其实也有,不过代码块为空
# 显示调用这个方法,就可以在构造一个对象,同时把实例变量初始一下
class animal():
gangmu = "dw"
# 第一种格式
# def __init__(self):
# self.name = "xiaohua"
# self.age = 2
# self.leg = 5
def __init__(self ,name, age ,leg):
self.name = name
self.age = age
self.leg = leg
def pri_info(self):
print("%s %s %s" %(self.name, self.age, self.leg))
# 无参构造方法
# cat = animal()
# cat.name = "laji"
# cat.age = 12
# cat.leg = 1
# cat.pri_info()
# 有参构造方法
dog = animal('shabi',12,14)
dog.pri_info()
3 》三大特性
封装:希望只能看到自己的数据,把变量和方法定义为私有的
私有化变量
私有化方法
继承
多态
(1)封装
#私有化变量
#私有化方法
class animal():
# __ 就是对类的属性进行私有话
__gangmu = "dw"
def __init__(self):
self.__name = "xiaohua"
self.age = 2
self.leg = 5
# 对私有属性进行访问
def pri_info(self):
print(self.__gangmu)
print("%s %s %s" %(self.__name, self.age, self.leg))
# 对私有方法进行定义,不能直接访问
def __eat(self):
print("cccc")
# 对私有方法进行访问
def toeat(self):
self.__eat();
cat = animal();
cat.pri_info()
cat.toeat();·
(2)继承
当我们定义一个class的时候,可以从某个现有的class继承,新的class叫子类,二继承的class叫做基类,父类或者超类
继承可以把父类的所有功能职级直接拿过来,这样就不必重新写重复的功能,子类只需要新增加自己特有的功能即可,也可以把不合适的·方法重写
重写:直接在子类中定义一个和父类同名的方法就叫重写
子类现有的属性是父类继承来的,继承父类的构造方法(默认继承,是不显示出来的)
类直接调用方法:
实例方法不能使用类名直接调用,只能使用对象调用
类方法(静态方法):是可以直接使用类来调用animal.__init__(self,xx,xxx)
私有方法/属性不能被继承使用
格式:
1.定义父类
class persion():
公共方法与属性
2.子类继承父类
class teacher(persion):
(3)多态
多态:在不同场景小,体现的心态不同
多态的前提是继承
python效果不是很明显
# 继承的例子
class persion():
def __init__(self,name,age):
self.name = name
self.age = age
def eat(self):
print("%s吃吃吃" %self.name)
class teacher(persion):
def teach(self):
print("jiaoshu")
class itcxy(persion):
def __init__(self,name,age,tizhong):
persion.__init__(self,name,age)
self.tizhong = tizhong
p = persion('www',12)
p.eat()
t = teacher('teacher',12)
t.eat()
t.teach()
it = itcxy("itnongming",22,12);
it.eat()