马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
|