Python中的类
# 1、类(class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
# 2.变量称为属性
#3. 方法称为行为
# 4.对象是类的实例。在教室里面的每个同学都是人类的这个类的对象,对象又称为实例()
# 5.实例化:根据一个类创建不同的对象的过程叫做实例化
# 6.方法:就是类里面定义的函数
# 7.类变量:人类所共有的属性 head=1
# 8.实例变量:对象或者实例所独有的
# 9、类是用class 来定义,类名称首字母要大写
# class People(object): #新式类
# class People: 经典类
# 10、类里面定义一个方法需要空一个tab键
# 11.如果不定义构造方法就使用默认构造方法
# 12.构造函数里面一般就是用来定义实例变量的,在调用实例
# class people(object): #object称为父类,基类,也是一切类的父亲
# head=1 #这是类变量
# 这是构造函数也是构造方法,作用是为了创建对象用的
# 双下划线表示为私有的方法
# def __init__(self,name): #这个neme就是形式参数
# self.name=name #self.name称为实例变量,实例变量是实例独有的,self是当前类的对象本身
# 这是一个实例方法
# def play(self):
# print(self.name+'去打篮球')
# 类方法
# 这个@符称为装饰,作用是为了不影响原有方法,在原有的方法基础之上
# @classmethod
# def func1(cls):
# print('这是一个类方法')
# 静态方法
# @classmethod
# def func2():
# print('这是一个静态方法')
#私有方法
# def func3(self):
# print('这是一个私有方法')
# 可以通过创建一个实例类方法来引用有变量的结果
# def func4(self):
# return self.__age
# 创建一个对象
# 实例化一个对象
# p=people('小王',18) #创建出来一个对象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.finc5) #对象调用实例方法引用到私有变量结果
# 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())
# 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()
|
|