类与调用 类的三大特性
本帖最后由 成都9班-何加云 于 2021-11-21 21:10 编辑python中的模块应该包含:函数,常量,变量 ,类。1.类:描述具有相同属性和方法的对象的集合。类是对象的抽象和归纳。2.对象:通过类所创建的实体就是对象,对象是类的实例。3.实例化:根据类创建对象的过程,就叫做实例化。4.方法:一般函数写在类的外面,叫函数。写在类的里面叫做方法。5.类变量:整个类所拥有的属性。6.实例变量:用来修饰实例本身。实例就是对象,对象就是实例。7.把变量理解为属性,把方法理解为行为。8.@符号:叫做装饰器。作用:用来不改变函数本身的情况,添加上其他的功能。
创建一个类:classPeople(object): #使用class 作为关键字,类名需要首字母大写,新式类 head=1 #这个是类变量 def__init__(self,name,age):#构造函数,用来给实例或者对象添加属性。私有的 self.name=name #self.name 实例变量,self代表实例本身 self.__age=age #私有实例变量,不能够在类的外部使用 deffunc1(self): #在类里面,如果不修改他的属性,那么他默认为实例方法 print(self.name+self.age+"岁可以举重100kg") @classmethoddeffunc2(cls): #这个叫做类方法,代表整个人类可以做的事情。 print("我可以跑步")@staticmethod deffunc3(): #这个叫做静态方法 ,理解为类方法。没有cls 来表示。 print("我是一个静态方法") def__func4(self): #双下划线开头代表私有方法,只能够在类的内部使用 print("这个是一个私有方法") deffunc5(self): #创建一个实例方法,return私有方法,然后在外部调用这个方法,就会得到私有方法 return self.__func4() deffunc6(self): #创建一个实例方法,return私有变量,然后类的外部调用这个方法,就会得到私有变量 return self.__agep=People("小王","18") #创建一个对象1.调用方法p.func1() #对象调用实例方法People.func1() #类调用实例方法,报错People.func1(p) #类派出一个对象去调用实例方法p.func2() #对象调用类方法People.func2() #类调用类方法p.func3() #对象调用静态方法People.func3() #类调用静态方法p.fun4() #类外部,调用私有方法,会报错People.func4() #类外部,调用私有方法,会报错p.func5() #如果在类的外部调用私有方法,需要在类中进行封装,返回2.调用变量print(p.name) #对象调用实例变量print(p.func6()) #func6中有返回的私有变量print(People.name) #类调用实例变量,报错print(p.head) #对象调用类变量print(People.head) #类调用类变量
类的特性:1.封装:classPeople: #经典类,默认继承object def __init__(self): pass def set_name(self,name): #创建一个实例方法,并且将获取到的值赋值给实例变量 self.name=name defget_name(self): #谁调用这个方法,我就把这个实例变量返回给他 return self.namep=People()p.set_name("小明")print(p.get_name())
2.继承当自己的类中方法不够使用了,可以去继承别的类。被继承的叫做父类,继承的叫做子类。子类对象可以调用父类的方法,父类对象不能够调用子类的方法。可以同时继承多个类,也可以继承之后再进行继承。第一种:同时继承多个类:class Father(object): #object 不是形式参数,是万物之源 def__init__(self): pass defrich(self): print("我是一个富有的人") defdrink(self): print("我是一个喜欢喝酒的人")classMother(): defbeautiful(self): print("我是一个漂亮的人")
classSon(Father,Mother): def__init__(self): pass defyoung(self): print("我是一个年轻的人") defstrong(self): print("我是一个强壮的人")f=Father() #创建父类对象s=Son() #创建子类对象s.rich() #子类对象可以调用父类方法s.beautiful()f.young() #父类对象不能够调用子类方法
第二种:继承之后再继承:class Grandfather(object): #object 不是形式参数,是万物之源 def__init__(self): pass defrich(self): print("我是一个富有的人") defdrink(self): print("我是一个喜欢喝酒的人")classFather(Grandfather): defbeautiful(self): print("我是一个漂亮的人")classSon(Father): def__init__(self): pass defyoung(self): print("我是一个年轻的人") defstrong(self): print("我是一个强壮的人")s=Son()f=Father()s.rich() #孙子类对象,调用爷爷类方法f.rich() #父亲类对象可以调用爷爷类方法s.drink() #孙子类对象,调用爷爷类方法s.beautiful() #孙子类对象,调用父亲类方法s.strong() #孙子类对象,调用孙子类方法
3.多态: 当继承的类里面的方法,不满足子类的要求了,子类可以进行方法的重写。如果调用重写的方法,会执行重写之后的方法。classAnimal(object): defsay(self): print("欢迎来到动物世界")classDog(Animal): deftalk(self): print("汪汪") defsay(self): print("hello")
a=Animal()d=Dog()g=Grandfather()a.talk()a.say()#如果在子类中,没有对say方法进行重写,那么会调用父类中的这个say的方法a.say() #如果在子类中,对say方法进行了重写,那么会调用重写之后的方法
a=Animal()d=Dog() #Dog类继承与Animal类g=Grandfather()
判断对象是否属于这个类print(isinstance(a,Animal)) #Trueprint(isinstance(d,Animal)) #Trueprint(isinstance(g,Animal)) #False
判断第一个参数的类,是否继承于第二个参数的类print(issubclass(Dog,Animal)) #Trueprint(issubclass(Grandfather,Animal)) #False
页:
[1]