python之面向对象

发布于:2024-04-26 ⋅ 阅读:(26) ⋅ 点赞:(0)

目录

1. 面向对象和面向过程思想

2. 类和对象

3. 类的组成

3.1. 成员属性

3.2 成员属性

3.2 成员方法

4. 特殊方法和参数

4.1 成员方法的self参数

4.2 __init__方法

4.3 __str__方法

5. 私有化

5.1 属性私有化

5.2 方法私有化


1. 面向对象和面向过程思想

面向对象面向过程都是一种编程思想,就是解决问题的思路

  • 面向过程:POP(Procedure Oriented Programming)面向过程语言代表是c语言
  • 面向对象:OOP(Object Oriented Programming)常见的面向对象语言包括:java c++ go python koltin
  • 面向对象,强调的是对象(实体)
  • 面向对象是一种思想,更加符合人的思维习惯
  • 面向对象使复杂的问题简单化了
  • 面向对象的出现,让曾经在过程的执行者,变成了对象的指挥者

2. 类和对象

类和对象是面向对象非常重要的概念

  • 类是描述了一种类型(相当于图纸)
  • 对象是这个类型的具体实现(相当于图纸具体实现)

定义类和创建对象

类的定义格式:

class 类名:

        pass

 创建对象:

对象名 = 类名()

3. 类的组成

类可以描述世间万物,类都需要有类名,也应该具备一些属性行为

  • 类的关键字:class
  • 类的名称:类名
  • 类的属性:一组数据
  • 类的方法:允许进行操作的方法(行为)

3.1. 成员属性

成员属性的定义需要在初始化方法__init__方法下定义

格式:

class Person:
    def __init__(self, name, age):
        # 成员属性
        self.name = name
        self.age = age
        
# 创建对象
p = Person('张三', 30)
# 访问成员属性
print(p.name)
print(p.age)

在创建对象时,属性值可以由外部传进来,也可以在初始化方法里设置为任意值

3.2 成员属性

成员属性的定义需要在初始化方法 __int__ 方法下定义

class Person:
    def __init__(self, name, age):
        # 成员属性
        self.name = name
        self.age = age
        
# 创建对象
p = Person('张三', 30)
# 访问成员属性
print(p.name)
print(p.age)

在创建对象时,属性值可以由外部传进来,也可以在初始化方法里设置为任意值

3.2 成员方法

格式:def 函数名(self):

class Person:
    
    # 定义成员方法 say_hello
    def say_hello(self):
        print('hello')
        
	# 定义成员方法run
    def run(self):
        print('跑')

# 创建对象
p = Person()
# 调用成员方法
p.say_hello()

注意:

成员方法都会默认有参数self,调用的时候不需要传递self

4. 特殊方法和参数

4.1 成员方法的self参数

self 表示调用该方法的对象

对象调用方法时,python解释器会把这个对象作为第一个参数传递给方法

通过 self 也可以获取对象的属性,调用对象的其他成员方法

class Person:
    def __init__(self, name, age):
        # 定义成员属性
        self.name = name
        self.age = age

    def say_hello(self):
        # 通过self访问成员属性
        print(self.name)


# 对象
p = Person('张三', 30)
p.say_hello()

4.2 __init__方法

__int__是一个内置方法,当对象创建时会自动执行__int__方法

# 定义类
class Person:
    def __init__(self):
        print('执行了init方法')

# 创建对象
p1 = Person()
p2 = Person()

4.3 __str__方法

也是一个内置对象,用于将对象转化为适于人阅读的形式

class Person:
    def __init__(self,name,age):
        # 成员属性
        self.name = name
        self.age = age

    def __str__(self):
        '''
        以字符串输出对象,把对象变成我们能够读懂的形式输出出来
        :return:
        '''
        return 'name:{}, age:{}'.format(self.name,self.age)

# 创建对象
p1 = Person('张三',30)
p2 = Person('李四',40)
print(p1)
print(p2)

5. 私有化

私有化作用:保证类中数据安全

属性或者方法设置为不能在外部访问,就是私有化

私有化包括:属性私有化,方法私有化

5.1 属性私有化

格式:两个下划线 __

self.__属性名 = 属性值

class Circle:
    def __init__(self,radius):
        # 半径
        self.radius = radius
        # 私有化圆周率属性 
        self.__PI = 3.1415926


    def perimeter(self):
        '''
        求圆的周长
        :return: 圆的周长
        '''
        return 2 * self.__PI * self.radius

5.2 方法私有化

方法的私有化方式和属性私有化方式一样

class Person:
    def __say_hello(self):
        print('hello')