|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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)
复制代码 使用类实例化对象
格式:
对象名 = 类名(参数列表)
注意:没有参数,小括号也不能省略。
访问对象的属性与方法
- 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
复制代码 |
|