面向对象概念

类:模板
对象:模板造出来的玩意
封装:
1、防止数据被随意修改
2、使外部程序不需要关注对象内部的构造,只需要通过此对象对外提供的接口进行直接访问即可。
继承:通过父类->子类的方式以最小代码量的方式实现不同角色的共同点和不同点
多态:一个接口,多种实现
代码举例:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Dog(object):
    def __init__(self,name):   #构造函数=构造方法=初始化方法
        self.name = name
    def sayhi(self):     #类的方法
        print("hello, I am a dog. My name is ", self.name)
    def hehe(self,food):
        print("hello, %s.\t There is some %s" % (self.name,food))

d = Dog('wangcai')  #实例化后产生的对象叫实例
d.sayhi()    
d2 = Dog("erha")
d2.hehe('apple')

类-->实例化-->实例对象
__init__:构造函数
self.name = name     #属性,或成员变量
def sayhi()    #方法,或动态属性
公有属性:在类中定义的属性,所有属于这个类的对象都能访问的属性。
实例引用类中定义的公有属性,公有属性发生改变,则引用的也一起改变。
注意:类中定义的的方法也相当于一个公有属性。

类的析构:一般用于程序的一些收尾工作。
定义:
def __del__(self):
  pass

总结:
1、类是模板,而实例是根据类创建的对象;
2、每个实例各自拥有其属性,相互独立,互不影响,而类属性(公有属性)有且仅有一份;
3、公有属性是直接绑定在类上的,故访问公有属性不需要创建属性就可以直接访问;
其次,类中所有实例都可以访问到它们所属类的属性;
4、python是动态语言,故公有属性也可以动态添加和修改;因为公有属性只有一份,故当类属性改变时,所有实例访问的公有属性都改变了;
5、当实例属性和公有属性同名时,实例属性在该实例中优先级较高,访问时将屏蔽类属性;
6、实例方法的第一个参数一定是self。

 

补充:
1、什么是面向对象编程?
类+对象
2、什么是类,什么是对象,他们有什么关系?
类里面包含了函数

class 类名:
def 函数1():
pass
def 函数2():
pass
obj = 类()      # obj是对象,此处是实例化的过程
obj.函数1()

3、什么时候适用面向对象?
⑴ 根据模板创建某些对象
⑵ 要求对实例进行扩展
⑶ 如果多个函数需要传入共同参数时
4、函数(方法)和公有属性保存在类里面,普通属性保存在对象里面。
属性:
普通属性(保存在对象中)
公有属性(保存在类中)
方法:
普通方法(保存在类中,调用者为对象)
静态方法(保存在类中,调用者是类,无需创建对象,可以有任意个参数),eg:

class F1:
    @staticmethod
    def a1(*args):
        print("hello")
F1.a1()
# 输出hello

5、self就是调用当前方法的对象。
静态字段使用场景:每个对象中保存相同的东西时,可以使用静态字段。
6、封装:
类中封装了属性和方法;
对象中封装了普通属性的值。

转载于:https://www.cnblogs.com/fone933/p/7789171.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值