找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
'''
python中的类
1、类(class):用来描述具有相同的属性和方法的集合。它定义了该集合中每一个对象多共有的属性和方法。对象是类的实体
2、变量称为属性
3、方法称为行为
4、对象是类的实例。在教室里面的每个同学都是人类这个类的一个具体的对象,然后对象又称为实例【实际存在的例子】
5、实例化:根据一个类创建不同的对象的过程叫做实例化
6、方法:就是类里面定义的函数
7、类变量:人类所共有的属性   head = 1
8、实例变量:对象或者实例所独有的
9、类是用class 来定义,类名称首字母要大写
class People(object): #新式类
class People:   经典类
10、类里面定义一个方法需要空一个tab键

'''

class People(object):            #object称为父类、基类、也会是一切类的父类
    head=1    #这就是类变量
    # 这是构造函数,也称构造方法,作用是为了创建对象用的
    # 双下划线表示为私有的方法
    def __init__(self,name,age):     #这个name就是性格是参数
        self.name=name           #self,name称为实例变量,实例变量是实例独有的,self是当前类的对象本身
        self,__age=age
    # 这是一个实例方法
    def play(self):
        print(self.name+'去打篮球')

    #类方法
    #这个@符号称为装饰器,作用是为了不影响原有方法,在原有方法的功能基础之上增加新的功能
    #cls就是代表的是class的缩写,特点是类可以直接调用类方法(因为属于类的,不用创建对象)
    @classmethod
    def func1(cls):
        print('这是一个类方法')

    #静态方法
    @staticmethod
    def func2():
        print('这是一个静态方法')

    #私有方法、只能在类的内部
    def __func3(self):
        print('这是一个私有方法')

    #可以通过穿件一个实例方法来引用私有变量的结果
    def func4(self):
        return self.__func3()
    #通过创建一个实例方法来引用私有变量的结果
    def func5(self):
        return self.__age

    #def func5(self):
# 创建一个对象
#实例化一个对象
p=People('小高')       #创建出来一个对象p,这个对象的名字叫做小高
p1=People('小刘')      #People()称为匿名对象,因为没有传入实际对象名称
p.play()
p1.play()

#1、类和对象调用类变量、实例变量
print(People.head)      #调用实例变量
print(People.name)      #报错,类调用实例变量,实例变量是对象和实例独有的
print(p.head)           #对象调用类变量
print(p.name)           #对象调用实例变量

#2、类和对象调用私有方法和私有变量
People.play(p)     #类调用实例方法报错,但是传输一个对象,表示具体哪个对象取打篮球
People.func1()     #类调用类方法
People.func2()     #类调用静态方法
p.play()           #对象调用实例方法
p.func1()          #对象调用类方法
p.func2()          #对象调用静态方法

#3、类和对象调用私有和私有变量
People.__func3     #报错
p.__func3          #报错
People.func4()     #报错,类不能直接调用实例方法
p.func4()          #对象调用实例方法
print(p.name)      #对象能调用实例方法
print(p.__age)     #对象不能调用私有变量
print(p.func5())   #对象调用实例方法引用到的私有变量结果
print(People.func5(p))   #类调用实例方法需要传对象

'''
调用私有方法和私有变量总结:
私有方法和私有变量都不能直接被类和对象所调用,必须先在类的内部通过创建实例方法引用私有变量和私有方法,
并将其结果进行返回给实例方法。然后再再类外部通过类和对象调用实例方法,就可以得到私有变量和私有方法的结果
'''

#python当中,类的三大特性
#1、封装特性
class People(object):
    def __init__(self,name):
        self.__name = name         #双下划线开头的变量叫私有变量,只能在类内部里面使用

    def setName(self,newname):
        self.__name = newname      #设值

    def getName(self):
        return self.__name         #取值
p = People("xiaowang")
# print(p.__name)                    #报错,对象和类不能直接调用私有变量,也不能直接调用私有方法
p.setName("xiaoxiaoming")
print(p.getName())


#2、继承
class Father (object) :
    def __init__(self):#默认构造函数,什么都没有,没有属性
        pass

    def smoke(self):
        print('喜欢抽烟')

    def rich_man(self):
        print('非常有钱')

    def play(self):
        print('喜欢打牌')
class Son(Father): #子类继承父类,继承多个父类可以这样写class Son(Father,A,B)
    def __init__(self):
        Father.__init__(self)       #继承父类的构造函数

    def car(self):
        print('喜欢车')
    def basketball(self):
        print('喜欢篮球')
    def girl(self):
        print( '喜欢美女')
    def play(self):
        print( '喜欢玩儿')
s = Son()
s.rich_man()        #调用的时候会联想出父类的特性
s.play ()
s.smoke()
s.girl()            #自己的特性也会保留
s.play()            #父类和子类有相同特性,只能调用本身的特性


# 多态特性
# 1、多态是以继承和重写父类方法为前提,对所有子类实例化产生的对象调用相同的方法,执行产生不同的执行结果。
# 2、例如同样是人,但是当问起一个人的职业时会有不同的结果,可能是软件测试工程师,可能是HR
# 3、一个对象的属性和行为不是由他所继承的父类决定的,而是由其本身包含的属性和方法决定的。

#3、多态(方法的重写)
class Animal(object):
    def talk (self):
        print('我是动物')
class Cat (Animal):
    def talk (self):
        print('瞄瞄')
class Dog( Animal):
    def talk (self):
        print( '汪汪')
a = Animal()
a.talk()
c = Cat()
c.talk()
d = Dog()
d .talk()





分享至 : QQ空间
收藏

1 个回复

倒序浏览
666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册