python学习对象

对象= 属性+方法

创建一个类对象

class Turtle: # Python 中的类名约定以大写字母开头
    """关于类的一个简单例子"""
    #属性
    color = 'green'
    weight = 10
    legs = 4
    shell = True
    mouth = '大嘴'

    # 方法
    def climb(self):
        print('我正在努力的向前爬...')

    def run(self):
        print('我正在飞快地跑...')
        
    def bite(self):
        print('咬死你')
        
    def eat(self):
        print('有的吃')
        
    def sleep(self):
        print('睡了')

  

>>> tt = Turtle()
>>> tt.climb()
我正在努力的向前爬...
>>> tt.bite()
咬死你
>>> tt.sleep()
睡了

OO的特征(object oriented面向对象)

  封装   信息隐蔽技术

  继承   子类自动共享父类之间的数据和方法的机制

>>> class MyList(list):
	pass

>>> list2 = MyList()
>>> list2.append(5)
>>> list2.append(3)
>>> list2.append(7)
>>> list2
[5, 3, 7]

list2继承了list函数的所有方法

  多态   不同对象对不同方法响应不同的行动

>>> class A:
	def fun(self):
		print('我是A')

		
>>> class B:
	def fun(self):
		print('我是B')

		
>>> a = A()
>>> b = B()
>>> a.fun()
我是A
>>> b.fun()
我是B

self是什么?

相当于C++的this指针

同一个类可以生成无数对象,对象调用方法,对象名会传给self,方法里的self就会替换成该对象

>>> class Ball:
	def setName(self, name):
		self.name = name
	def kick(self):
		print('我叫%s'% self.name)

		
>>> a = Ball()
>>> a.setName('球A')
>>> b = Ball()
>>> b.setName('球B')
>>> c = Ball()
>>> c.setName('土豆')
>>> a.kick()
我叫球A
>>> c.kick()
我叫土豆

name mangling名字重造

  私有函数变量:在名字前加两个下划线

>>> class Person:
	__name = 'xiao'
	def getName(self):
		return self.__name

	

无法使用XX.__name调用这个对象的name,只能间接用内部方法调用出名字,达到隐藏内部变量的目的,但是其实只是改成XX._Person_name

继承

class DerivedClassName(BaseClassName):

class 子类名(父类名):

>>> class Parent:
    def hello(self):
        print("调用父类方法")

        
>>> class Child(Parent):
    pass

>>> p = Parent()
>>> p.hello()
调用父类方法
>>> c = Child()
>>> c.hello()
调用父类方法

如果子类中定义与父类同名的方法属性,则会覆盖

解决办法

1,调用未绑定的父类方法

class Shark(Fish):
    def __init__(self):
        Fish.__init__(self)    #调用父类
        self.hungry = True

2,使用super函数更好

class Shark(Fish):
    def __init__(self):
        super().__init__()    #使用super函数
        self.hungry = True

多重继承,继承父类的方法和属性

class 子类名(父类1,父类2,...)

原文地址:https://www.cnblogs.com/jdzhang1995/p/10329915.html