鱼C论坛

 找回密码
 立即注册
查看: 1824|回复: 0

[学习笔记] 面向对象

[复制链接]
发表于 2019-4-22 20:29:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 我是python小白 于 2019-4-22 20:42 编辑

面向对象
设计类:

对象名:Wife(见名之意,首字母大写没其他遵循驼峰原则)
属性:sex age height weight faceValue(见名之意,其他遵循驼峰原则)
行为: 做饭  洗衣服 拖地 揉肩 捶腿(见名之意,其他遵循驼峰原则)
创建类*
类:一种数据类型,本身并不占内存空间,根所学过的number, boolean等类似,用类创建实例化对象(变量),对象占内存空间

格式:

class 类名(父类列表):

        属性

        行为
#一个简单的类(人类)
object:基类,超类,所有类的父类。一般没有合适的父类就写object
class Person(object):
    #定义属性(定义变量)
    name = ""
    age = 0
    height = 0
    weight = 0
    #定义方法(定义函数)
    #注意:方法的参数必须以self当第一参数
    #self代表类的示例(某个对象)
    def run(self):
        print("run")
    def eat(self, food):
        print("eat" + food)
使用类实例化对象
格式:

对象名 = 类名(参数列表)

注意:没有参数,小括号也不能省略。
per1 = person()
访问对象的属性与方法
per = person()
#访问属性
#格式:对象名.属型名
#赋值:对象名.属性名 = 值
per.name = "tom"
per.age = 18
print(per.name, per.age)
#访问方法
#格式:对象名.方法名(参数列表)
per.opemDoor()
per.fillElephant()
per.eat("apple")
#问题:目前来看person创建的所有对象属性都是一眼的
对象的初始状态(构造函数)
#构造函数 __init__()在使用类创建对象的时候自动调用
#注意:如果不显示的写出构造函数,默认会在佛那个添加一个空的构造函数。
##默认格式:
def __init__(self):
    pass
self关键字:
self代表类的示例,而非类

那个对象调用方法,那么该方法中self就代表那个对象
#self代表类的示例,而非类
#那个对象调用方法,那么该方法中self就代表那个对象
self.__class__ 代表类名
#self 不是富案件自,换成其他的表示符也是可以的,但是帅的人都是用self
析构函数
__del__() 释放对象自动调用
##建立析构函数
def __del__()
##手动释放
def 对象名
#注意:对象释放以后就不能再访问了

#在函数里定义的队形,会在函数借宿自动,这样可以减少内存空间的浪费
def func():
    per2 = Person("aa", 11,1,1)
重写
#重写:将函数重写定义一遍
#__str__:在调用print打印对象自动调用,是给用户用的,,是一个描述对象的方法。
#__repr__():是给机器用的,在python解释器里面直接敲对象名在回车后调用的方法
#注意:在没有str时,且有repr,str = repr
class Person(object):
    def __str__(self):
        return "%s-%d-%d-%d"%(self.name, self.age,self.height, self.hight)
#优点:当一个对象的属性值很多,并且都需要打印,重写了__str__方法,简化了代码
访问限制
如果压让的内部属性不被外部直接访问,在属性名前加两个下划线,在python中如果在属性前加两个下换线,那么这个属性就变成了私有属性。

int(pre__name)#外部不能使用
int(self.__name)#内部可以使用
#通过内部的方法,取修改的值
def setMoney(self, money):
    #数据的过滤
    if money < 0:
        money = 0
    self.__money = money
继承
继承:有两个类,a类和b类,当我们说A类继承自B类的时候,那么A类就拥有B类中的所有的属性和方法

object类是说有类的父类,还可称为基类或者超类。

注意:继承者称为子类,被继承者称为父类。

继承作用:

1.简化了代码,减少冗余

2、提高了代码的健壮性

3.提高了代码的安全性

4、是多态的前提

继承的缺点:

耦合与内聚是描述类与类之间的关系,耦合越低,内聚性越高代码越好。

单继承的实现
class Person(object):
    def __int__(self, name, age):
        self.name = name 
        self.age = age
       
    def run (self):
        print("run:)
     
    def eat(self, eat):
        print("eat" + eat)
              
#继承类
class Student(Person):
    def __init__(self, name, age, stuId):
        #调用父类中的__init__
        super(Student, self).__init__(name, age)
        #子类可以有一些独有的属性
        self.stuID = stuId
多继承
from Father import Father
from Monther import Mother
class Child(Father, Mother):
    def __init__(self, money, money):
        F
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 10:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表