面向对象

一.面向对象如何写代码

二.面相对象的三大特征:封装、继承,多态

面向对象:

定义:

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:多态

多种形态或多种状态
鸭子模型,只要可以嘎嘎叫就是鸭子

 

posted @ 2018-08-27 17:08  魏三斗  阅读(144)  评论(0编辑  收藏  举报