Python面向对象编程基础

面向对象关键词:类,对象,实例,方法

面向对象三大特性:封装,继承,多态

class Foo:      # 定义类名
    def f1(self):     # f1方法
        print("success")

obj = Foo()    # 创建对象
obj.f1()          # 通过对象执行方法

类和对象的关系:

self参数是一个Python自动会传值的参数,那个对象执行方法,self就是那个

class SQLhelp():

    def __init__(self, a1, a2, a3):         # 此方法会自动执行,那个对象执行的方法,self就是那个
        print("自动执行init")
        self.host = a1
        self.name = a2
        self.pwd = a3

    def find(self):
        pass

obj1 = SQLhelp(‘c1.salt.com‘, ‘djc‘, ‘100‘)    # 参数分别对应a1,a2,a3
print(obj1.host)

>>>自动执行c1.salt.com

  

 对象中封装对象

class c1:
    def __init__(self, name, obj):
        self.name = name
        self.obj = obj

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

    def show(self):
        print("MDZZ")

class c3:
    def __init__(self, a1):
        self.aaa = a1

c2_obj = c2("djc", 19)    # 要写在c1类之前
c1_obj = c1("sb", c2_obj)
ret = c1_obj.obj.name
print(ret)

>>>djc

c3_obj = c3(c1_obj)
ret2 = c3_obj.aaa.obj.show()
print(ret2)

>>>MDZZ

  

 简单单继承

# 继承相当于把父类的方法复制到了子类,而不是去父类里拿

class f1:         # 父类,基类
    def show(self):
        print("f1")

    def foo(self):
        print(self.name)

class f2(f1):          # 子类,派生类
     def __init__(self, name)
        self.name = name

obj = f2("djc")
obj.foo()

>>>djc

  

复杂单继承

class f1:
    def F1(self):
        self.F2()                # 执行f2的F2

    def F2(self):
        print("f1,F2")

class f2(f1):
    def F3(self):
        self.F1()                 # 执行f1的F1

    def F2(self):
        print("f2,F2")

obj = f2()
obj.F3()       # 自己的方法优先,作为子类不要忽略继承的父类的方法,如果自己没有,才去父类里面找

>>>
f2,F2

简单多继承

class c1:
    def f2(self):
        print("c1")

class c2:
    def f2(self):
        print("c2")

class c3(c2,c1):         # 左边的优先
    def f3(self):
        pass

obj = c3()
obj.f2()

>>>c2

稍复杂多继承

class c0:
    def f2(self):
        print("c0")

class c1:
    def f2(self):
        print("c1")

class c2(c0):
    def f1(self):
        print("c2")

class c3(c2,c1):
    def f3(self):
        pass

obj = c3()
obj.f2()

>>>c0

  

复杂多继承

class c_2:
    def f2(self):
        print("c_2")

class c_1(c_2):
    def f2(self):
        print("c_1")

class c0(c_2):
    def f1(self):
        print("c0")

class c1(c_1):
    def f1(self):
        print("c1")

class c2(c0):
    def f1(self):
        print("c2")

class c3(c2,c1):
    def f3(self):
        pass

obj = c3()
obj.f2()

>>>c-1

class h5:
    def forever(self):
        self.run()

class h4(h5):
    def __init__(self):
        pass

    def run(self):
        self.process()

    def process(self):
        print("h4")

class h3(h4):
    def __init__(self):
        pass

class h2:
    def process(self):
        print("h2")

class A(h2, h3):
    pass

obj = A()
obj.forever()

>>>h2

 

时间: 2024-08-05 19:36:03

Python面向对象编程基础的相关文章

4.python面向对象编程基础

4.1 面向对象编程的基本思想 类用来定义抽象类型 实例的一个类的具有实现 python中 class Person: pass 数据封装 class Person: def __init__(self, name,age ) self.name = name self.age = age p = Person('xiaoming',23) 4.2类的定义与创建实例 在Python中,类通过 class 关键字定义.以 Person 为例,定义一个Person类如下: class Person(

Python 面向对象编程基础

活在当下的程序员应该都听过“面向对象编程”一词,也经常有人问能不能用一句话解释下什么是“面向对象编程”,我们先来看看比较正式的说法. 把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派. 这样一说是不是更不明白了.所以

Python 面向对象编程基础——初始化实例、类属性、方法

#1.初始化实例化属性.#可接受任意关键字参数,并把他们都作为属性赋值给实例.使用**kw,除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过setattr(self, 'name', 'xxx')设置属性.class Person(object):    def __init__(self, name, gender, **kw):        self.name = name        self.gender = gender        for k,v i

python面向对象编程基础II(类的继承)

继承一个类 继承的好处: 1.复用已有代码 2.自动拥有现有类的所有功能 3.只需要编写缺少的功能 如果已经定义了Person类,需要定义新的Student和Teacher类时,可以直接从Person类继承: class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender 定义Student类时,只需要把额外的属性加上,例如score: class Student(Pers

python学习第十四天 -面向对象编程基础

python也是支持面向对象编程的.这一章节主要讲一些python面向对象编程的一些基础. 什么是面向对象的编程? 1.面向对象编程是一种程序设计范式 2.把程序看做不同对象的相互调用 3.对现实世界建立对象模型 面向对象编程的基本思想: 1.类用于定义抽象类型 2.实例根据类的定义被创建出来 如何定义一个类并创建实例? >>> class Animal(object): pass >>> dog = Animal() >>> cat = Animal

JAVA学习(五):Java面向对象编程基础

Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目的. 1.OOP的3个特性(封装.继承和多态性) 封装是类的基础.指把类的相关实现细节隐藏起来,在类中将数据和实现操作的代码集中起来放在对象的内部.调用这些类时仅仅需直接使用类预留的接口就能够了. 继承提供了子类自己主动拥有父类数据结构和方法的机制.它表示类之间的一种关系. 多态指使一个对象被看成还

[.net 面向对象编程基础] (22) 事件

[.net 面向对象编程基础] (22)  事件 事件(Event)是学习.net面向对象编程很重要的一部分,在学习事件之前,我们实际上已经在很多地方使用了事件,比如控件的click事件等,这些都是.net设计控件的时候已经定义好的事件.除此之外,我们同样可以自己定义事件. 事件实际上是一种消息机制,当然点击控件时,click就通知处理他的方法去处理,实际上就是前面说的委托.因此我们可以说:事件是一种具有特殊签名的委托.而事件/消息机制是windows的核心,因此我们必须掌握他. 为了更加容易理

[.net 面向对象编程基础] (20) LINQ使用

[.net 面向对象编程基础] (20)  LINQ使用 通过上节LINQ的基础知识的学习,我们可以开始使用LINQ来进行内存数据的查询了,我们上节说了LINQ的定义为:Language Integrated Query(语言集成查询)的简称,它是集成在.NET编程语言中的一种特性. 1.LINQ的构架 从这幅图中,我们可以知道LINQ包括五个部分:LINQ to Objects.LINQ to XML.LINQ to SQL.LINQ to DataSet.LINQ to Entities.

[.net 面向对象编程基础] (14) 重构

[.net 面向对象编程基础] (14) 重构 通过面向对象三大特性:封装.继承.多态的学习,可以说我们已经掌握了面向对象的核心.接下来的学习就是如何让我们的代码更优雅.更高效.更易读.更易维护.当然了,这也是从一个普通程序员到一个高级程序员的必由之路.就看病一样,普通医生只能治标,高级医生不但看好病,还能除病根. 1.什么时重构? 重构(Refactoring)就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量.性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性.