找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手

第八讲,python中的类与对象

[复制链接]
# 第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()


分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册