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.
原文:https://www.cnblogs.com/kubernets/p/8905981.html