面向对象

面向对象

1. 概念

**类(Class)**用来描述具有相同属性和方法的对象集合。它定义了该集合每个对象共有的属性和方法。对象则是类的实例

类变量 类变量在整个实例化对象中是公用的。类变量定义在类中但是在函数体外。类变量通常不作为实例变量使用。

数据成员 类变量或者实例变量用于处理类及实例对象的相关数据

方法 类定义的函数

实例变量 定义在方法中的变量,只作用于当前实例的类

继承 一个派生类(derived class)继承基类(base class)的字段和方法。

方法重写 如果父类的继承的方法不能满足子类的需求,可以对其改写,这个过程的覆盖,叫做方法重写(override)

实例化 创建类的实例,类的具体对象

2. 命名方式

  1. 大驼峰 首字母大写OnlineStuInfo

  2. 见名知意

  3. 区分大小写

3. 类定义

"""
wife 
属性: sex,age,height,weight,name,facevalue
行为: 洗衣服,做饭,生小孩
husband
属性: sex,age,height,weight,name,handsome
行为: 吃饭,照顾小孩(奶爸),赚钱
"""
class Wife(object):
   # female 女性
   sex = "female"
   age = 19
   height = 168
   name = "苍苍"
   faceValue = "9.8"

   def washClothes(self):
       print("洗衣服")   # wash clothes

   def cook(self):
       print("做饭")     # cook

   def makeChild(self):
       print("生娃")

bdqb = Wife()
print(bdqb.name)
print(bdqb.makeChild())

4. self代表类的实例,而非类

类里面的方法,都会有一个必须存在参数self,这个self参数不是python的关键字,我们可以把它替换成任意参数名

class SelfSpecialPage(object):
   def prt(modeng):
       print(modeng.__class__)

sss = SelfSpecialPage()
sss.prt()

5. 属性和方法

对象.属性名
对象.方法名(参数...)
返回方法里数值的关键字 return

注意: (方法里)return下方代码就不在执行了,遇到return就默认结束了

6. 对象属性和类的属性

  1. 使用对象创建的属性,只有当前对象存在该属性,称为对象属性

  2. 使用类创建的属性,在每个对象里都会存在,称为类属性

  3. 当在对象里去修改类属性值的时候,相当于在当前对象里新创建一个对象属性,当调用的时候优先调用对象的属性,但是类本身的值,不会改变

  4. 对象的属性由于类的属性

  5. 实例的属性优先于类的属性

class Person(object):
    name = "person"
    def __init__(self,name,age,wq):
        self.name = name
# 调用类的属性
print(Person.name)
person_1 = Person("DD")
# 实例的属性优先于类的属性
print(person_1.name)
person_1.age = 22
print(person_1.age) # 对象临时添加的属性,只对当前对象起作用,其它的都免提
# 已经删除了对象的名字
del person_1.name
print(person_1.name)

注意: 避免对象属性和类属性重名, 因为对象属性会屏蔽掉类属性,如果删除对象属性,会继续使用类属性

7. 实例绑定属性两种方式

一种通过self变量,构造函数 person_1 = Person(“MD”)

一种直接赋值 person_1.age = 22

  1. ATM取款

raise 主动抛出一个信息

子类可以继承或者扩展方法,但是父类不能调用子类的方法,这好像是向上转型

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页