22 python中的类与对象
# python中的模块应该包含哪些东西? ==》函数,常量,变量,类'''
1、类:描述具有相同属性和方法的对象的集合
2、对象:通过类所创建的实体就是对象
3、实例化:根据类创建对象的过程
4、方法:一般,写在类的外面的叫函数,写在类的里面的叫方法
5、类变量:整个类所拥有的属性
6、实例变量:用来修饰实例本身。 实例就是对象,对象就是实例。
7、把变量理解为属性,把方法理解为行为
8、@符号:叫做装饰器,作用:不改变函数本身的情况下,用来添加上其他的功能
9、object理解为万物之源,需要继承object
'''
#创建一个类:
# class People(object):# 使用class作为关键字,类名需要首字母大写,新式类
# head=1 # 这个是类变量
# def __init__(self,name,age): #构造函数,用来给实例或对象添加属性。以双下划线开头,代表私有的
# self.name=name # self.name 实例变量, self代表实例本身
# self.__age=age # self.__age=age 私有实例变量,不能在类的外部使用
# def func1(self): # 在类里面,如果不修改他的属性,那他默认为实例方法。是否可以不输入self??
# print("我可以举重100公斤")
# print(self.name+self.__age+"岁可以耍朋友")
# @classmethod
# def func2(cls): # 这个叫做类方法,代表整个人类可以做的事情,cls代表class
# print("我可以跑步")
# @staticmethod
# def func3(): # 这个叫做静态方法,理解为类方法,但是没有cls来表示
# print("我是一个静态方法")
# def __func4(self): # 双下划线开头代表私有方法,只能够在类的内部使用,不能在类的外部使用。
# print("这是一个私有方法")
# def func5(self): # 创建一个实例方法,return私有方法,然后在外部调用这个方法,就会得到私有方法
# return self.__func4() # 将私有方法return到新建的一个实例方法中,这是一个封装的体现
# def func6(self): # 创建一个实例方法,return私有变量,然后在类的外部调用这个方法,就会得到私有变量
# return self.__age
# p=People("小王","18")#创建一个对象
# p.func1()# 对象调用实例方法,我可以举重100公斤,小王18岁可以耍朋友
# People.func1()# 类调用实例方法,会报错
# People.func1(p)# 类派出一个对象去调用实例方法,但是一般不这样使用,我可以举重100公斤
# p.func2()# 对象调用类方法#我可以跑步
# People.func2()# 类调用类方法#我可以跑步
# p.func3()# 对象调用静态方法#我是一个静态方法
# People.func3()# 类调用静态方法 #我是一个静态方法
# p.func4() # 类外部,调用私有方法,会报错
# People.func4()# 类外部,调用私有方法,会报错
# p.func5() #如果在类的外部调用私有方法,需要在类中进行封装,返回
# print(p.func6())#func6中有返回的私有变量#18
# 调用变量
# print(p.name)#对象调用实例变量小王
# print(p.age) #报错,无法调用私有实例变量
# print(p.func6())#func6中有返回的私有变量#18
# print(p.head)#对象调用类变量 1
# print(People.name)#类调用实例变量,报错
# print(People.head)#类调用类变量 1
# class People: #经典类,默认继承object
# pass
# 类的特性:
# 1、封装:
# class People:# 经典类,默认继承object
# def __init__(self):
# pass
# def set_name(self,name):# 创建一个实例方法,并且将获取到的值赋值给实例变量
# self.name=name
# def get_name(self):#谁调用这个方法,我就把这个实例变量返回给他
# return self.name
#
# p=People()
# p.set_name("小明")
# print(p.get_name())
# 2、继承:
# 当自己的类中的方法不够使用了,可以去继承别的类。 被继承的叫做父类,继承的叫做子类。
# 子类对象可以调用父类的方法,父类对象不能够调用子类的方法
# 可以同时继承多个类,也可以继承之后再进行继承
# 第一种:同时继承多个类
# class Father(object):#object不是形式参数,是万物之源
# def __init__(self):
# pass
# def rich(self):
# print("我是一个富有的人")
# def drink(self):
# print("我是一个酗酒的人")
# class Mother():
# def beautiful(self):
# print("我是一个漂亮的人")
#
# class Son(Father,Mother):
# def __init__(self):
# pass
# def young(self):
# print("我是一个年轻的人")
# def strong(self):
# print("我是一个强壮的人")
#
# f=Father() # 创建父类对象
# s=Son() # 创建子类对象
# s.rich()#子类对象可以调用父类方法 我是一个富有的人
# s.drink()# 我是一个酗酒的人
# s.beautiful()#我是一个漂亮的人
# f.young()#父类对象不能调用子类方法,报错
# 第二种:继承之后再继承
# class Grandfather(object): # object 不是形式参数,是万物之源
# def __init__(self):
# pass
# def rich(self):
# print("我是一个富有的人")
# def drink(self):
# print("我是一个酗酒的人")
# class Father(Grandfather):
# def beautiful(self):
# print("我是一个漂亮的人")
# class Son(Father):
# def __init__(self):
# pass
# def young(self):
# print("我是一个年轻的人")
# def strong(self):
# print("我是一个强壮的人")
# s=Son()
# f=Father()
# s.rich() # 孙子类对象,调用爷爷类方法 我是一个富有的人
# f.rich() # 父亲类对象,可以调用爷爷类方法我是一个富有的人
# s.drink() # 孙子类对象,调用爷爷类方法我是一个酗酒的人
# s.beautiful()# 孙子类对象,调用父亲类方法我是一个漂亮的人
# s.strong() # 孙子类对象,调用孙子类方法我是一个强壮的人
# 3、多态:当继承的类里面的方法,不满足子类的要求了,子类可以进行方法的重写。
# 如果调用重写的方法,会执行重写之后的方法
# class Animal(object):
# def say(self):
# print("欢迎来到动物世界")
#
# class Dog(Animal):
# def talk(self):
# print("汪汪")
# def say(self):
# print("hello")
#
# class Grandfather(object):
# def __init__(self):
# pass
# def rich(self):
# print("我是一个富有的人")
# def drink(self):
# print("我是一个酗酒的人")
# a=Animal()
# d=Dog()
# g=Grandfather()
# a.talk()# Animal是父类,无法调用子类Dog的实例方法,报错
# d.say()# 如果在子类中,没有对say方法进行重写,那么会调用父类中的say的方法 欢迎来到动物世界
# d.say()#如果在子类中,对say方法进行了重写,那么会调用重写后的方法hello
# a=Animal()
# d=Dog() # Dog类继承于Animal类
# g=Grandfather()
# 判断对象是否属于这个类
# print(isinstance(a,Animal))#True
# print(isinstance(d,Animal))#True
# print(isinstance(g,Animal))#False
# # 判断第一个参数的类,是否继承于第二个参数的类
# print(issubclass(Dog,Animal))#True
# print(issubclass(Grandfather,Animal))# False
页:
[1]