1.面向对象的思想概述:
程序员从面向过程的执行者转化成了面向对象的指挥者
对象:将数据以及对数据的操作封装在一起,组成一个相互依存、不可分割的整体。
类:对于相同类型的对象进行分类、抽象后,得出共同的特征而形成了类。
2.类定义语法
Python使用class关键字来定义类,class关键字之后是一个空格,然后是类的名字,再然后是一个冒号,最后换行并定义类的内部实现。
class Person:
def __init__(self):
self.name="韩信"
self.gender='男'
self.weight=70
print("An instance created")
def speak(self):
print("hello")
p=Person()
print(p.name)
p.speak()
在类中定义的方法可以粗略分为四大类:公有方法、私有方法、静态方法和类方法。
私有方法的名字以两个下划线“__”开始,每个对象都有自己的公有方法和私有方法,在这两类方法中可以访问属于类和对象的成员;
公有方法通过对象名直接调用,私有方法不能通过对象名直接调用,只能在属于对象的方法中通过self调用或在外部通过Python支持的特殊方式来调用。
如果通过类名来调用属于对象的公有方法,需要显式为该方法的self参数传递一个对象名,用来明确指定访问哪个对象的数据成员。
静态方法和类方法都可以通过类名和对象名调用,但不能直接访问属于对象的成员,只能访问属于类的成员。
静态方法可以没有参数。
一般将cls作为类方法的第一个参数名称,但也可以使用其他的名字作为参数,并且在调用类方法时不需要为该参数传递值。
>>> class Root:
__total = 0
def __init__(self, v):
self.__value = v
Root.__total += 1
def show(self):
print('self.__value:', self.__value)
print('Root.__total:', Root.__total)
@classmethod
def classShowTotal(cls):
print(cls.__total)
@staticmethod
def staticShowTotal():
print(Root.__total)