一.面向对象如何写代码
二.面相对象的三大特征:封装、继承,多态
面向对象:
定义:
class 类名: 定义了一个类
def 函数名(self) 在类中编写了一个方法
pass
调用:
x1=类() 创建了一个对象,或者说是实例化了一个对象
x1.函数名() 通过对象调用其中的一个方法
class Account: def yh (sher): use=input("请输入用户名") pwd=int(input("请输入密码")) if use=="alex" and pwd==123: print("登录成功") else: print("登录失败") ojb= Account() ojb.yh()
class LaoGou: def __init__(self,name,age,gender): 构造方法,把共用的一些数据放到一块打包 self.name=name self.age=age self.gender=gender def kc(self): date="%s,性别%s,今年%s岁,喜欢上山砍柴" %(self.name ,self.age ,self.gender) print(date) def db(self): date="%s,性别%s,今年%s岁,喜欢开车去东北" %(self.name ,self.age ,self.gender) print(date) def bj(self): date="%s,性别%s,今年%s岁,喜欢大保健" %(self.name ,self.age ,self.gender) print(date) obj=LaoGou("老欧狗","男",20) obj.kc() obj.db() obj.bj() 老欧狗,性别男,今年20岁,喜欢上山砍柴 老欧狗,性别男,今年20岁,喜欢开车去东北 老欧狗,性别男,今年20岁,喜欢大保健
面向对象的应用:
1.将数据分装到对象中,以供自己在方法中方便使用
class FileHandler: def __init__(self,file_pyth): self.filepyth=file_pyth self.f=open(file_pyth,mode="rb") def first(self): self.f.read() def last(self): self.f.read() obj=FileHandler('F:/XX/XX.log') obj.first() obj.last()
2.将数据封装到对象中,以供其他函数调用
def func(arg): arg.n1 arg.n2 arg.n3 class Foo: def __init__(self,n1,n2,n3): self.n1=n1 self.n2=n2 self.n3=n3 obj=Foo(1,2,3) func(obj)
class UserInfo: def __init__(self): self.name=None def xx(self): print("当前用户名是%s" %(self.name)) def zd(self): print("当前%s的账单是" %(self.name)) def shopping(self): print("%s购买了一个抱枕" %(self.name)) def dl(self): user=input("请输入用户名") pwd=int(input("请输入密码")) if pwd==123: self.name=user while 1: print(""" 1. 查看用户信息 2. 查看用户账单 3. 购买抱枕 """) num =int(input("请输入数字选择")) if num==1: self.xx() elif num==2: self.zd() elif num==3: self.shopping() else: print("输入有误,请重新输入") obj=UserInfo() obj.dl()
3.面向对象的代码如何编写:
a:规则
class Fool:
def __init__(self,name)
self.name=name
def detail(self,msg)
print(self.name,msg)
obj=Fool()
obj.detail()
b:什么时候写,怎么写?
方法1:归类+提取公共值
方法2:
在指定类中编写和当前类相关的所有代码+提取公共值
4.面向对象的三大特性:封装、继承、多态
a:封装:把相关功能封装到一个类中,把数据封装到一个对象中
***********************把功能封装到类中********************
class Message:
def email(self):pass
def msg(self):pass
def weixin (self):pass
把信息以邮件,短信,微信的方式发送
***********************把数据封装到对象中********************
class Person:
def __init__(self,name,age,gender)
self.name = name
self.age = age
self.gender = gender
obj=Person("vvv",18,"男")
b:继承
(1):编写继承
(2):支持多个继承,(先找左边,再找右边)
(3):多继承的好处:提供代码的重用性
c:多态
多种形态或多种状态
鸭子模型,只要可以嘎嘎叫就是鸭子