Sirius' blog Sirius' blog
首页
  • 学习笔记

    • 《C++》
    • 《MATLAB》
    • 《Python》
  • 学习笔记

    • 《Git》
    • 《CMake》
  • 技术文档
  • 博客搭建
  • 学习
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Sirius0v0

怕什么真理无穷,进一寸有一寸的欢喜
首页
  • 学习笔记

    • 《C++》
    • 《MATLAB》
    • 《Python》
  • 学习笔记

    • 《Git》
    • 《CMake》
  • 技术文档
  • 博客搭建
  • 学习
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Python学习_基础语法(一)
  • Python学习_运算符
  • Python学习_函数
  • Python学习_异常
  • Python学习_文件
  • Python学习_全局变量与局部变量
  • Python学习_推导式
  • Python_生成器和迭代器
  • Python学习_面向对象
    • 使用类创建对象
    • 普通方法格式
    • 魔术方法
    • 类方法
    • 静态方法
    • 私有化及@property装饰器
  • Python学习_OS模块
  • 《Python》学习笔记
Sirius0v0
2020-10-22
目录

Python学习_面向对象

# 面向对象简介

多个对象 ---> 提取对象的共同特征和动作 ---> 封装到一个类别中

'''
class 类名[(父类)]:
    属性:特征
    
    方法:动作

'''
  • 类名要求首字母大写,多个字母使用驼峰式命名

# 使用类创建对象

可以将类看作是一个模板,通过固定的模板,选取其中的属性,组成各种各样的对象

class Phone:
    brand = 'huawei'
    __private = '外部无法修改'	# 以__开头的变量仅能在类的内部进行修改,无法在外部通过Phone.__private 修改
    
xiaoming = Phone()
xiaohong = Phone()
print(xiaoming.brand)
xiaohong.brand = 'xiaomi'
print(xiaohong.brand)

>> huawei
xiaomi

# 类中的方法

# 普通方法格式

'''
def 方法名(self[,参数,参数]):
	pass
'''
class Phone:
    brand = 'xiaomi'
    price = 6999
    
    def call(self):
        print('self值为:',self)
        
phone1 = Phone()
print(phone1)
phone1.call()

# 魔术方法

__名字__()称作魔术方法

  • 创建对象的过程了解
    • 执行phone1 = Phone()后,利用类这个模板向内存申请一个与Phone一样的空间
    • 在Phone中找有没有魔术方法
      • 没有则将开辟的内存给phone1
      • 有则执行里面的动作,之后将内存给phone1,其中传入魔术方法的self为申请的空间地址,也就是最终赋值给phone1的空间地址。
class Phone:
    def __init__(self):
        print('----init----')
        
    def call(self):
        print('self值为:',self)
        
phone1 = Phone()

>> ----init----

# 类方法

特点:

  • 类中的方法上面添加@classmethod构成类方法
  • 传入的参数为cls,意为当前类
  • 类方法里只能使用类属性,不可使用对象属性
  • 类方法的调用不依赖于对象,没实例化对象的时候依然可以通过类名.类方法名()调用
  • 类方法中不能使用普通方法

# 静态方法

特点:

  • 需要用@staticmethod装饰器装饰
  • 静态方法是无需传递参数的
  • 只能访问类的属性和方法

# 私有化及@property装饰器

私有化:在变量名前加__,如__name

@property:设置特殊的set,get方法

class Person:
    def __init__(self,name,age):
        self.__name = name
        self.age = age
    
    @property
    def name(self):
        return self.__name
    
    @name.setter
    def name(self,name):
        self.__name = name
        
p = Person("Jonny",20)
print(p.name)
p.name = "JoJo"
print(p.name)
编辑 (opens new window)
#Python
上次更新: 2023/08/09, 13:21:24
Python_生成器和迭代器
Python学习_OS模块

← Python_生成器和迭代器 Python学习_OS模块→

最近更新
01
ipopt优化库配置及使用
07-21
02
ubuntu离线安装包的方法
07-21
03
其它控件的使用
03-05
更多文章>
Theme by Vdoing | Copyright © 2020-2024 Sirius0v0 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式