zoukankan      html  css  js  c++  java
  • Python面向对象编程

    类与对象的区别
    类是客观世界中的事物的抽象,比如人类、球类
    对象是类实例化的实体,比如足球,篮球
    实例说明:
    球类可以对球的特征和行为进行抽象,然后可以实例化一个真实的球实体出来(实例化就是创造对象)

    类的创建格式:

    class ClassName:
       类的内容


    class Fruit:
        def __init__(self):  ###__init__为类的构造函数
            self.name = name   ### 类的属性
            self.color = color
        def grow(self):  ###定义grow函数,在类中函数称为方法
             print "Fruit grow"

    **类的方法必须有一个self参数,在方法调用时,可以不传递这个参数

    方法:类中定义的函数

    属性:类中的定义的变量

    类的实例化

    根据类来创建的对象的称为实例化

    class Dog():
        def __init__(self,name,age):     
             self.name = name
             self.age = age

        def sit(self):    ##类的方法
              print(self.name.title() + " is now sitting.")
        def roll_over(self):    
              print(self.name.title() + " rollwd over!")

    my_dog = Dog(‘willie‘,‘6‘)    ###类的实例化

    print("My dog‘s name is " + my_dog.name.title() + ‘.‘)
    print("My dog is " + str(my_dog.age) + " years old." )

    结果:

    My dog‘s name is Willie.
    My dog is 6 years old.

    调用方法
    将类实例化后,可以通过句号表示法来调用类中定义的方法

    my_dog.sit()
    my_dog.roll_over()


    结果:
    Willie is now sitting.
    Willie rolled over!

    类的属性

    类的属性按使用范围可以分为共有属性和私有属性,类的属性范围取决于属性的名称
    公有属性: 在类中和类外都能调用的属性
    私有属性: 不能再类外及类以外的函数调用的属性
    定义方式:以"__"双下划线开始的成员变量就是私有属性

    实例:

    #!/usr/bin/python
    class People(object):
          color = ‘yellow‘
          __age = 30 ####私有属性
    def think(self):
         self.color = ‘black‘
         print "i am a %s" % self.color
         print "I am a thinker"
         print self.__age ###调用类的私有属性
    ren = People()
    print ren.color
    ren.think()
    ~  
    执行脚本  
    [root@lxh day04]# python class1.py 
    yellow
    i am a black
    I am a thinker
    30

    =====================================================
    如果在类外中调用私有属性,会提示找不到属性
    #!/usr/bin/python

    class People(object):
          color = ‘yellow‘
         __age = 30
         def think(self):
              self.color = ‘black‘
              print "i am a %s" % self.color
              print "I am a thinker"
              print self.__age
    ren = People()
    print ren.color
    ren.think()
    print ren.__age ####调用类的私有属性
    ~  
    执行
    提示找不到属性
    Traceback (most recent call last):
    File "class1.py", line 14, in <module>
    print ren.__age
    AttributeError: ‘People‘ object has no attribute ‘__age‘

    类的方法

    方法的定义和函数一样,但是需要self作为第一个参数
    类型:
    公有方法:在类中和类外都能调用的方法
    私有方法: 不能被类的外部调用,在方法前面加上"__"双下划线就是私有方法
    self参数
    用于区分函数和类的方法(必须有一个self) self参数表示执行对象本身
    ===============================================================
    公有方法实例:
    #!/usr/bin/python
    #coding:utf8
    class People(object):
       color = ‘yellow‘
       __age = 30
    def think(self):
        self.color = ‘black‘
        print "i am a %s" % self.color
        print "I am a thinker"
        print self.__age
    def test(self):  
        self.think()    ####调用方法think
    jack = People()
    jack.test()

    执行
    [root@lxh day04]# python class2.py 
    i am a black
    I am a thinker
    30

    ===================================================================
    私有方法实例:

    #!/usr/bin/python
    #coding:utf8
    class People(object):
         color = ‘yellow‘
        __age = 30
    def think(self):
        self.color = ‘black‘
        print "i am a %s" % self.color
        print "I am a thinker"
        print self.__age
    def __talk(self):
        print "i am talking with tom"
    def test(self):
        self.__talk()    ###调用私有方法talk
    jack = People()
    jack.test()

    执行

    [root@lxh day04]# python class2.py 
    i am talking with tom

    类的继承

    一个类继承另外一个类时,会获得另外一个类的所有属性和方法,原有的类成为父类,而新类称为子类,子类基础父类的所有属性和方法

    class Car():

          def __init__(self, make, model, year):
               self.make = make
               self.model = model
               self.year = year
               self.odometer_reading = 0

    def get_descirptive_name(self):
           long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + self.model
           return long_name.title()

    def read_odometer(self):
           print("This car has " + str(self.odometer_reading) + " miles on it.")

    class ElectircCar(Car): ###定义子类ElectricCar
            def __init__(self,make,model,year):
                  super().__init__(make,model,year)      ###初始化父类的属性,调用electircar的父类方法__init__(),使electircCar包含父类的所有属性

    my_tesla = ElectircCar(‘tesla‘,‘model S‘,2016)     ##创建ElectircCar类实例,调用父类Car定义的方法__init__()
    print(my_tesla.get_descirptive_name())     #调用父类方法


    执行结果
    2016 Tesla Model S

    ###创建子类时,父类必须包含在当前文件中,且位于子类前面,必须在括号内指定父类的名称
    super()为了将父类的和子类关联起来


    子类定义属性和方法

    class Car():

          def __init__(self, make, model, year):
          self.make = make
          self.model = model
          self.year = year
          self.odometer_reading = 0

    def get_descirptive_name(self):
          long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + self.model
          return long_name.title()

    def read_odometer(self):
          print("This car has " + str(self.odometer_reading) + " miles on it.")

    class ElectircCar(Car):
         def __init__(self,make,model,year):
              super().__init__(make,model,year)
    self.battery_size = 70     ##子类属性
    def describe_battery(self):    ##子类方法
           print("This car has a " + str(self.battery_size) + "-kwh battery.")

    my_tesla = ElectircCar(‘tesla‘,‘model S‘,2016)
    print(my_tesla.get_descirptive_name())
    my_tesla.describe_battery()


    执行结果

    2016 Tesla Model S
    This car has a 70-kwh battery.

  • 相关阅读:
    Gitblit搭建及Git协作开发流程
    Windows平台使用Gitblit搭建Git服务器图文教程
    gitblit搭建git服务器
    IntelliJ IDEA手动配置连接MySQL数据库
    如何去掉Intellij IDEA过多的警告 设置警告级别
    修改和重置WAMP的phpMyAdmin密码
    phpMyAdmin中config.inc.php设置密码和修改密码的方法
    Oracle、Mysql、SqlServer创建表和给表和字段加注释
    java注释规范
    JAVA基础补漏--static
  • 原文地址:https://www.cnblogs.com/d-d-w/p/9333701.html
Copyright © 2011-2022 走看看