# 第8讲 python中类于对象
# 1、python 中的类
#1) 类(class): 用来描述具有相同的属性和方法的对象的集合。
# 它定义了该集合中每个对 象所共有的属性和方法。对象是类的实例。
# 2)属性是什么? 称为变量 ,head =1 hand = 2
# 3)方法是什么? 称为行为, 人要吃饭,说话,在python中方法:就是在类里面定义函数
# 4)对象是什么:通过类定义的数据结构实例,包括两个数据成员(类变量和实例变量),好比
# 在教室每个同学都是人类,==》这个就是每个具体的对象,这个对象称为实例,再好比每个
# 杯子,但是每个被子有相同的,也有不相同的==》对象
# 5)实例化:根据一个类创建不同的对象的过程就是实例化
# 6)类变量:人类共有的属性 头 脚
# 7)实例变量:对象后者实例独有的属性 self
# 8)类的定义:类名一般是要首字母大写
# 9)类分为两种:
# class People(object) 新式类
# class People 经典类
# 10)类里面定义一个方法需要空一个tab键
# 2、python 中类的定义 class
# class People(object):
# #object 称为父类,基类,也是一切类的父类,类里面需要空一个tab键
# head = 1 #这个叫类变量
# def __init__(self,name): #这个是构造方法,作用为了创建形式对象用的,双下划线表示私有方法
# #这个name 是形式参数
# self.name = name #这个self.name 称为实例变量,self 是类的对象本身
# print(name)
#这个是实例方法
# def play(self):
# print(self.name+'去打篮球')
# 类方法
# @classmethod #这个@符是装饰器,作用是为了不影响原有功能的基础上给原有方法增加新的方法功能
# def test(cls):
# print('这个是一个类方法')
#静态方法
# @staticmethod
# def test1(): #这个括号不用参数
# print('这是一个静态方法')
#私有方法
# def __test2(self):
# print('这个是一个私有方法')
# 可以通过创建一个实例方法来引用私有方法的结果
# def test3(self):
# return self.__test2()
# 3、创建一个对象
# p = People('小段') #创建一个对象p 这个对象的姓名就叫做小段
#People('小段') 叫作匿名对象 赋值给了对象p
# p.play() #对象调用方法
# p1 = People('xiaoma')
# p1.play()
# 4、类和对象调用类变量 实例变量
# print(People.head) #类调用类变量
# print(People.name) #类调用实例变量,报错,实例变量是独有的
# print(p.head) #对象调用类变量
# print(p.name) #小段 对象调用实例变量
# 5、类和对象调用实例方法 类方法 静态方法
# People.play(p) #类调用实例方法,需要加一个对象进去
# People.test() #类调用类方法
# People.test1() #类调用静态方法
# p.play() #对象调用实例方法
# p.test() #对象调用类方法
# p.test1() #对象调用静态方法
# 6、类和对象调用私有方法
# People.__test2(p) #报错 类不能直接调用私有方法
# People.test3(p) #这个是一个私有方法 可以通过创建一个实例方法来引用私有方法的结果
# p.__test2() #对象也不能调用私有方法
# p.test3() #这个是一个私有方法(通过间接方式)
# 7、类的三大特性
# 1)封装(在类里面写的方法就是封装)
# class People:
# def __init__(self,name):
# self.name = name #占位符
# def test(self): #实例方法
# print(self.name)
#
# def set_name(self,name):
# self.__name = name #私有变量(双下划线)
#
# def get_name(self):
# return self.__name
#
# p = People('xiaoma')
# p.set_name('xiaoduan') #需要传实际参数:xiaoduan
# print(p.get_name()) #xiaoduan
# p.test()
# 2)继承
# class Father(object):
# def __init__(self):
# pass
# def smoke(self):
# print('喜欢抽烟')
# def money(self):
# print('有钱')
# def Lol(self):
# print('喜欢lol')
# class Son(Father):
# def __init__(self):
# Father.__init__(self) #继承父类的构造方法
# def meinv(self): #自己的实例方法
# print('喜欢美女')
# def car(self):
# print('喜欢车')
# def bar(self):
# print('喜欢泡吧')
# s = Son()
# s.meinv()
# s.car()
# s.Lol()
# s.money()
# s.smoke()
# 1、继承:类的继承是面向对象程序设计的一个重要思想,继承时子 类可以继承父类的内容,
# 包括成员变量和成员函数。
# 2、在继承中一个类被另外一个类继承这个类称之为父类也称之为基 类,则另外一个类则为子
# 类也称之为派生类。
# 多态
# 1、多态是以继承和重写父类方法为前提,对所有子类实例化产生的对象 调用相同的方法,
# 执行产生不同的执行结果。
# 2、例如同样是人,但是当问起一个人的职业时会有不同的结果,可能是 软件测试工程师,
# 可能是HR
# 3、一个对象的属性和行为不是由他所继承的父类决定的,而是由其本身 包含的属性和方法决定的。
#
class Animal(object): #父类
def say(self):
print('动物园')
class Dog(Animal):
def say(self):
print('汪汪')
class Cat(Animal):
def say(self):
print('喵喵')
d = Dog()
d.say()
c = Cat()
c.say()
|
|