1.编程思想:
面向过程编程(穷人思想),函数式编程(中产阶级),面向对象编程(富豪阶级)
面向过程编程:算法和逻辑
函数式编程:函数
面向对象式编程:类和对象
2.类
类就是拥有相同属性,相同功能的对象的集合
属性:对象具有的数据
功能:动作,函数
对象:类的实例
3.类的声明
确定类共同的属性和功能
(1)语法:
class 类名:
说明文档
类的内容
(2)说明:
class:关键字
类名:要求-标识符,不能是关键字
规范:a.首字母大写,驼峰式命名规范;
b.见名知义;
c.不能使用系统提供的方法名或者类名;
类的说明文档要求和函数的说明文档一样;内容随意。
类的内容:
属性:
功能(方法:声明在类中的函数)
3.声明对象
(1)语法:对象=类()
class Person: """ 人类; 属性:身高,体重 方法:吃喝拉撒睡 """ class Person: def __init__(self,name): #初始化方法,创建一个对象即调用一次初始化方法;构造函数的参数由init函数决定; print("初始化方法",name) def eat(self, food): #对象方法 print("人类吃{}".format(food)) @classmethod #类方法 def drink(self, water): pass @staticmethod #静态方法 def pee(self, pees): pass person1 = Person()#person1中就是Person类的对象 person2 = Person()#person2中就是Person类的对象 #同一个类可以创建多个对象 print(person.eat("凉粉"))
(2)对象方法
类中的方法分为3种:对象方法,类方法和静态方法
对象方法:直接声明(声明前不需要加任何装饰器)在类中声明的函数;
特点:自带一个self参数,通过对象调用的时候不用传参数,通过类调用方法时,self会自动指向调用的类名。
self可以做到,谁调用就指向谁;
调用:以对象.方法()的形式来调用对象方法
4.构造函数
函数名和类名一样,用来创建类的对象的函数。python中声明类的时候,系统会自动为这个类创建一个构造函数。
构造方法的执行过程,在内存中开辟空间,创建对象,用创建好的对象去调用init方法,返回对象在内存中的地址
init方法(魔法方法:会自动调用)
声明在类中用来对对象进行初始化的方法;(当对象一创建出来,这个方法会自动调用一次)
5.类中的属性
类中的属性分为:字段,对象属性;声明在类中的变量
字段:声明在类里面函数外面的变量就是字段,以类.字段的形式使用;属性的值不会因为不同对象改变的时候使用;
对象属性:声明在init方法中:self.属性名=值;属性值会因为对象不同而不一样,这样的属性就声明成对象属性;通过对象使用。
class Student: def __init__(self): """ name,age,gender,study_ID 就是对象属性 """ self.name="张三" self.age=14 self.gender="man" self.study_ID="stu001"
对象属性的增删改查:
查:获取属性的值-对象.属性; getattr(对象,属性名);对象.getattribute("属性名")
增/改:对象.属性=值;setattr(对象,属性名,值);有属性就修改,无就添加
删除:del 对象.属性;delattr(对象,属性名)
slots魔法
通过给slots字段赋值来约束当前类的对象有哪些属性
class Dog: __slots__ = ("name","kind","age","gender")#通过slots约束对象拥有的属性名 def __init__(self, name, kind, age=1, gender="男"): self.name = name self.kind = kind self.age = age self.gender = gender def bark(self): print("%s wang wang wang!" % self.name) def massage(self): print(self.name, self.gender, self.age, self.kind) dog1 = Dog(name="大黄", age=12, kind="husky") dog2 = Dog(name="旺财", age=8, kind="Border collie") print(dog1.name)#简单 print(getattr(dog1,"name"))#灵活getattr(dog1,"name",获取不存在属性的默认值) print(dog1.__getattribute__("name")
2019-08-08总结
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
- 旧时,说书的人,最喜欢讲的就是《三国演义》,讲完了刘关张,就讲赵子龙。 说起来,刘关张为什么那么受人欢迎,也许就是...