类与对象

mac2025-12-10  3

在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。 对象=属性(静态的特征)+方法(动态的特征) 在Python中,定义类是通过class关键字: 以man为例: class man(object): pass class后面紧接着是类名,即man,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下承的类。 由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去: (self:Python的self相当于c++的this指针) __init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。

有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去: 封装:模拟真实世界,把数据和代码封装在一起 封装的另一个好处是可以给man类增加新的方法,比如get_age:

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

在Python中定义私有变量只需要在变量名或函数名前加上“_”两个下划线,那么这个函数或变量就会为私有的了 继承的实现方法 继承:子类自动共享父类之间数据与方法的机制。当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。 注:如果子类中定义 与父类同名的方法或属性,则会自动覆盖父类对应的方法或属性。当子类和父类都存在相同的方法时,我们说,子类的覆盖了父类的,在代码运行的时候,总是会调用子类的。这样,我们就获得了继承的另一个好处:多态 一些相关的BIF issubclass(class,classinfo) classinfo可以是类对象组成的元祖,只要class与其中任何一个候选类的子类,则返回true isinstance(object,classinfo) 检查一个实例对象是否属于一个类的,如果第一个参数不是对象,则永远返回false。如果第二个参数不是类或者由类对象组成的元祖,会抛出一个typeerror异常 hasattr(object,name) getattr(object,name[,default]) setattr(object,name,value) property(fget=None,fest=None,fdel=None,doc=None)

最新回复(0)