首页 > 编程语言 >python面向对象程序设计

python面向对象程序设计

时间:2022-12-16 13:11:57浏览次数:60  
标签:__ name python self 面向对象 init 程序设计 方法 def

python-面向对象程序设计

1:类

类就是一个图纸
类不可以直接使用
类中的行为叫类方法
类中的特性叫类属性

2:对象

对象时根据类创建出来的,可以直接使用
一个类可以创建多个对象
每个对象的属性值可能有所不同
一定先有类再有对象

3:面向对象设计基础

面向对象编程首先要设计类
类的三要素
类名
属性
类中的变量--属性
方法
类中的函数--方法

示例

'''设计一个小猫类
    类名cat
    属性:
        name:名字
        color:颜色
        height:身高
        weight:体重
    方法:
        eat:吃饭
        drink:喝水
        sleep:睡'''
class cat:
    def eat(self):
        print("猫吃饭")
    def drink(self):
        print("猫喝水")

  

class关键字

'''class关键字的作用
      定义一个类
  语法:
      class 类名:
          def 方法名(self,参数1,参数2……)'''

示例

class cat:#使用class关键字定义了一个类
        def eat(self):#方法的参数,第一个参数必须是self
            print("猫吃饭")
        def drink(self):
            print("猫喝水")

  

对象

'''对象
  类中的方法不能直接调用
  把类实例化为对象后,通过对象调用方法
  实例
      通过类创建的对象叫实例
  实例化
      通过类创建对象的过程叫示例化
  语法
      对象名.类名(参数列表)
      #对象创建后通过对象名.方法名(参数),调用方法
      对象名.方法名()'''

示例

c1=cat()#实例化对象,对象名类似与变量名
c1.eat()#通过对象名.方法名调用类的方法,调用类的方法时不用提供self对应的实参
c1.drink()#方法只能通过对象调用,不能通过类直接调用
#c1就是cat类的实例
#c1=cat()这个动作就叫实例化
c2=cat()#通过cat类又创建了一个实例叫c2,同样这个类也可以调用cat类中的方法
c2.eat()
c2.drink()

  

self参数的作用

'''self参数的作用
  1:self参数可以在方法内部定义和使用属性
  2:self参数可以在方法内部嵌套调用其他方法
  3:在类的外部是不可以使用self的
  4:在类的外部调用方法
      对象名.方法名(参数)
  5:在类的外部调用属性
      对象名.属性名()'''

示例

class dog:#创建了一个类
    def set_name(self):#定义了一个类属性(属性可以称为他的特性,如名字颜色,升高体重)
        self.name="tom"#给属性赋值,tom
    def eat(self):#定义了一个类的方法(类的方法可以称为类的动作,吃饭喝水)
        print("%s吃饭"%self.name)#在类方法里面调用了类的属性/这个方法里面使用了类的name属性
    def drink(self):
        print("%s喝水"%self.name)
c1=dog()#实例化类创建了一个对象叫c1
c1.set_name()#因为在类的方法里面调用了类的属性所以调用对象方法前,需要先调用属性,不然会报错
c1.eat()#调用了类的方法
c1.drink()
c1.name="lisi"#这里给类的属性赋值,相当于函数的实参
c1.eat()#因为在类的方法里面使用了类的属性,所以当类的属性值发生改变时,类方法里面调用的属性值也会随之改变
#案例:创建一个小狗类,创建对象,设置和对象的name为旺财,通过show_name查看类的name
class samilldog:#定义了一个小狗类
    def set_name(self,name):#定义了类的属性,属性中有一个形参叫name
        self.name=name
        #self.set_name="旺财"
    def show_name(self):
        print("小狗的名字叫:%s"%self.name)
sd=samilldog()
sd.set_name("旺财")#在调用类的属性时实参会将值传给形参
sd.show_name()

  

init方法

'''__init__方法
  __init__注意名字使用前后各两个下划线包裹起来
  __init__方法作用:
              当创建对象的时候__init__方法会自动调用'''

示例

class cat:
    def __init__(self):
        print("cat类被创建对象了")
    def eat(self):
        print("eatfish")
c1=cat()#在创建对象时自动调用__init__方法
c1.eat()

  

init方法的作用

'''__init__方法的作用:
          1:定义类中的属性
          2:通过init方法的参数为属性赋值
          3:init方法一但有了形参,对象在实例化时就必须提供实参,为了避免实例化时必须提供实参,init方法总是要有缺省值'''

示例

class cat:
    def __init__(self):
        print("cat类被创建对象了")
    def eat(self):
        print("eatfish")
c1=cat()#在创建对象时自动调用__init__方法
c1.eat()
'''__init__方法的作用:
            1:定义类中的属性
            2:通过init方法的参数为属性赋值
            3:init方法一但有了形参,对象在实例化时就必须提供实参,为了避免实例化时必须提供实参,init方法总是要有缺省值'''
class cat:
    def __init__(self,name="富贵"):#可以通过init方法给类的属性赋值
        self.name=name
    def show_name(self):
        print("这个猫的名字叫:%s"%self.name)
c2=cat()#因为在创建对象的时候init方法会被自动调用,所以当init方法的形参没有值时,在创建对象的时候就需要有实参,如果形参有值,那么需要修改类属性的值就赋值实参,不修改就不用
c2.show_name()
c3=cat("平安")#通过cat类又创建了一个c3对象,并赋值类属性的值为平安,
c3.show_name()#调用类的方法查看c3的属性值
#定义一个完整的小猫类
class cat:
    def __init__(self,name="富贵",color="yellow"):#定义了一个类,类有两个属性名字和颜色,均有缺省值
        self.name=name
        self.color=color
    '''def set_name(self,name,):
            self.name=name/self.name="tom"
            self.color=color'''#如果没有使用init方法就需要使用普通方法去调用赋值给属性
    def show_name(self):#定义了类的方法-查看类属性的值
        print("这个小猫的名字叫:%s"%self.name)
    def show_color(self):#定义了一个类查看类的第二个属性值
        print("这个小猫颜色是:%s"%self.color)
    def show(self):#定义了一个方法,通过这个方法可以调用前面两个方法/实现了一个函数的嵌套
        self.show_name()
        self.show_color()
c1=cat()#因为这个类的属性我们给了缺省值,如果没有特殊要求就可以不带实参,且使用了init方法此时这个类中的属性已经被自动调用
#c1.set_name/如果我们没有使用init方法,那么在创建完类或要给类属性赋值的时候就需要先调用以下类属性
c1.show()#实现的函数嵌套,当我们调用这个函数是,被嵌套的函数会自动调用
#案例car类
'''# 汽车car       要区分属性和方法,在init方法中为每个属性定义默认值
# 属性
# luntai(轮胎)
# yanse(颜色)
# chuanghu(窗户)
# xinghao(型号)
# 方法
# guadang(挂挡)
# qianjin(前进)
# houtui(后退)
# wurenjiashi(无人驾驶)
# shache(刹车)
# jiayou(加油)'''
class car:
    def __init__(self,luntai="米其林",yanse="black",chuanghu="黑色窗户",xinghao="大众"):
        self.xinghao=xinghao
        self.yanse=yanse
        self.luntai=luntai
        self.chuanghu=chuanghu
    def guadang(self,a):
        if a=="前进":
            self.qianjing()
        elif a=="后退":
            self.houtui()
        else:
            self.wurenjiashi()
    def qianjing(self):
        print("%s牌子汽车挂挡起步了"%self.xinghao)
    def houtui(self):
        print("%s牌子汽车在倒车"%self.xinghao)
    def wurenjiashi(self):
        print("%s的%s在无人驾驶"%(self.yanse,self.xinghao))#如果在格式化字符串的时候遇到需要凭借两个字符或两个以上不同类型字符记得有括号
c1=car()
c1.guadang("wurenjiashi")

  

del方法

'''del方法
  del方法在对象在内存中销毁的时候(类运行结束的时候)自动调用
  del方法只有一个参数就是self'''

示例

class cat:
    def __init__(self,name="tom"):
        self.name=name
    def show_name(self):
        print("这个猫的名字叫:%s"%self.name)
    def __del__(self):
        print("对象运行结束时自动调用del方法")
c1=cat()#对象运行前创建对象时自动调用init方法,此时类方法就有了值为tom
c1.show_name()#调用对象的方法查看对象的值
#在对象运行完自动调用del方法,如果对象是局部的,那么函数运行完毕自动调用del方法,如果对象是全局的那么在程序执行完毕自动调用方法
'''举例:犹如在自动化测试过程中:使用init方法的地方一般为实例化浏览器驱动,打开测试网址
        使用del方法一般是在运行完自动化代码,完毕浏览器的操作'''
#设计方法的惯例
class cat:
    def __init__(self,name="tom"):
        self.name=name
    def get_name(self):#show_name也可以使用return返回值将结果返回给调用者,在类中函数所有操作都是可以用的
        return self.name
c1=cat()
e=c1.get_name()#将函数的返回值返回给调用者
print(e)

  

str方法

'''str方法
  写法与del,init一致都是使用两个下划线包裹
  str只有一个参数就是self
  使用str方法必须要有return返回值,且return返回的必须是一个字符串
  str方法的作用
      当把一个带有str方法的对象放到print里面,
          print函数会显示str方法return返回的字符串
      如果类没有str方法,那么实例化的对象放到print里面就显示对象的内存地址'''

示例

class cat:
    def __init__(self,name="tom"):
        self.name=name
c=cat()
print(c)#类中没有str方法,如果直接放到print里面那么就显示对象的内存地址
class dog:
    def __init__(self,name="tom"):
        self.name=name
    def __str__(self):
        return self.name
d=dog()
print(d)#在类中加了str方法,且str方法必须要有返回值return必须返回一个字符串,所以现在将对象直接放到print里面,那么print打印的就是我们想要的内容
#练习计算机
'''实现一个计算器的类:
        通过init方法给类属性赋值
        通过调用类方法给函数赋值'''
class calc:
    def __init__(self,open="+"):#这个类有一个属性open缺省值是+
        self.open=open
    def calc(self,a,b):#类方法有两个形参a和b
        if self.open=="+":
            return a+b
        elif self.open=="-":
            return a-b
        elif self.open=="*":
            return a*b
        elif self.open =="/":
            c="除数不能为0"
            if b!=0:
                return a/b
            else:
                return c
        else:
            return None
c=calc()
print(c.calc(2,6))
c1=calc("*")
print(c1.calc(2,5))
c3=calc("/")
print(c3.calc(8,0))

  


 

标签:__,name,python,self,面向对象,init,程序设计,方法,def
From: https://www.cnblogs.com/wh0915/p/16987096.html

相关文章

  • python39
    Pythonpass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。Python语言pass语句语法格式如下:pass测试实例:实例#!/usr/bin/python......
  • python40
    PythonNumber数据类型用于存储数值。数据类型是不允许改变的,这就意味着如果改变Number数据类型的值,将重新分配内存空间。以下实例在变量赋值时Number对象将被创建......
  • Python__04--保留字与标识符
    1保留字与标识符1.1保留字定义:保留字也称为关键字,指被编程语言内部定义并保留使用的标识符,程序员编写程序时不能定义与保留字相同的标识符。每种程序设计语言都有一套......
  • python35
    Python 条件语句Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。可以通过下图来简单了解条件语句的执行过程:Python程序语言指定任......
  • Python学习笔记
    基础12345​​python开发环境​​​pycharm基础使用​​​字面量、注释、变量、数据类型、数据类型转换​​​标识符、运算符​​​字符串​​​数据输入​​​布尔类型、比......
  • python36
    无限循环如果条件判断语句永远为true,循环将会无限的执行下去,如下实例:实例#!/usr/bin/python#-*-coding:UTF-8-*-var=1whilevar==1:#该条件永远为true......
  • python37
    Python 循环嵌套Python语言允许在一个循环体里面嵌入另一个循环。Pythonfor循环嵌套语法:foriterating_varinsequence:foriterating_varinsequence:statem......
  • python32
    Python位运算符按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:下表中变量a为60,b为13,二进制格式如下:a=00111100b=00001101-----......
  • python34
    Python成员运算符除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。运算符描述实例in如果在指定的序列中找到值......
  • python33
    Python逻辑运算符Python语言支持逻辑运算符,以下假设变量a为10,b为20:运算符逻辑表达式描述实例andxandy布尔"与"-如果x为False,xandy返回False,否则......