自从改用Python做数据挖掘以来,我就很少用面向对象的内容了,那啥是面向对象呢?

可以这么理解,如果我们能把代码组合成一个一个可以重复使用的类别,那么这能使程序的可复用性更高,以后只要用这个类别的东西就好,不用再重复实现这样的内容了。

Class 类

以下是类的构建,跟函数一样,前面需要用class声明

class MyFirstClass:

def __init__(self, name):

self.name = name

def greet(self):

print('Hello {}!'.format(self.name))

现在来实例化一个类

my_instance = MyFirstClass('John Doe')

print('my_instance: {}'.format(my_instance))

print('type: {}'.format(type(my_instance)))

print('my_instance.name: {}'.format(my_instance.name))

做完以上的两个,你就实现了类的构建,并成功实例化了一个类。

Methods 函数

类中的函数称为方法,使用方式和一般的函数一样

alice = MyFirstClass(name='Alice')

alice.greet()

以上的输出,当然是Hello Alice!

__init__() 此方法曾困扰了我好久

__init__()是一种特殊的方法,用于初始化类的实例,在创建类的时候调用它

class Example:

def __init__(self):

print('Now we are inside __init__')

print('creating instance of Example')

example = Example()

print('instance created')

__init__()通常用于初始化类的实例变量。这些可以作为参数列出self。为了能够在实例的生命周期中稍后访问这些实例变量,你必须将它们保存到self。self是类的方法的第一个参数,它是ni对实例变量和其他方法的访问方式。

class Example:

def __init__(self, var1, var2):

self.first_var = var1

self.second_var = var2

def print_variables(self):

print('{} {}'.format(self.first_var, self.second_var))

e = Example('abc', 123)

e.print_variables()

做数据分析的时候,或许可以将很多语句拼凑起来完成数据的分析,但当涉及到更长远的考量,如果无法提高代码的复用率,那你就得每次都重新写一遍代码 for a life long time。

__str__()

__str__()是一个特殊的方法,当类的实例转换为字符串时调用(例如,当你想要打印实例时)。换句话说,通过__str__为你的类定义方法,你可以决定类的实例的可打印版本。该方法应返回一个字符串。

class Person:

def __init__(self, name, age):

self.name = name

self.age = age

def __str__(self):

return 'Person: {}'.format(self.name)

jack = Person('Jack', 82)

print('This is the string presentation of jack: {}'.format(jack))

类的变量与实例变量

类变量在该类的所有实例之间共享,而实例变量可以在该类的不同实例之间保存不同的值。

class Example:

# These are class variables

name = 'Example class'

description = 'Just an example of a simple class'

def __init__(self, var1):

# This is an instance variable

self.instance_variable = var1

def show_info(self):

info = 'instance_variable: {}, name: {}, description: {}'.format(

self.instance_variable, Example.name, Example.description)

print(info)

inst1 = Example('foo')

inst2 = Example('bar')

# name and description have identical values between instances

assert inst1.name == inst2.name == Example.name

assert inst1.description == inst2.description == Example.description

# If you change the value of a class variable, it's changed across all instances

Example.name = 'Modified name'

inst1.show_info()

inst2.show_info()

Public 与 Private变量

在python中,现在严格分离私有/公共方法或实例变量。如果一个变量是私有变量的话,惯例是使用下划线开始方法或实例变量的名称。私有意味着不应该从类外访问它。

例如,让我们考虑一下我们有一个Person具有age实例变量的类。我们希望age在创建实例后不直接访问(例如更改)。在Python中,这将是:

class Person:

def __init__(self, age):

self._age = age

example_person = Person(age=15)

# You can't do this:

# print(example_person.age)

# Nor this:

# example_person.age = 16

如果你想要age可读但不可写,那可以使用property:

class Person:

def __init__(self, age):

self._age = age

@property

def age(self):

return self._age

example_person = Person(age=15)

# Now you can do this:

print(example_person.age)

# But not this:

#example_person.age = 16

这样,你就可以对类的实例变量进行受控访问:

class Person:

def __init__(self, age):

self._age = age

@property

def age(self):

return self._age

def celebrate_birthday(self):

self._age += 1

print('Happy bday for {} years old!'.format(self._age))

example_person = Person(age=15)

example_person.celebrate_birthday()

类的继承

如果你不知道类的继承是什么,你就类比生物中的继承关系,而面向对象编程的思想,你也该去了解一下,非常简单。

class Animal:

def greet(self):

print('Hello, I am an animal')

@property

def favorite_food(self):

return 'beef'

class Dog(Animal):

def greet(self):

print('wof wof')

class Cat(Animal):

@property

def favorite_food(self):

return 'fish'

现在实例一下以上的类

dog = Dog()

dog.greet()

print("Dog's favorite food is {}".format(dog.favorite_food))

cat = Cat()

cat.greet()

print("Cat's favorite food is {}".format(cat.favorite_food))

python类介绍_Python基础介绍 | Class类相关推荐

  1. Python学习教程(Python学习路线_Python基础学习教程_Python视频教程):初学者新手怎样快速入门Python

    Python学习教程(Python学习路线_Python基础学习教程_Python视频教程):初学者新手怎样快速入门Python? 人生苦短,我用Python!!!短短几个字,现在在各大学习类平台随处 ...

  2. python最基本的规则是什么_Python基础介绍(一)

    Python基础介绍(一) 1. python是什么编程语言 编译型与解释型 ​编译器吧源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以极其语言来运行此程序,速度很快 ...

  3. python定义一个dog类 类属性有名字_python 基础 12 初识类,类方法,类属性

    python 基础 12 初识类,类方法,类属性 # 面向过程 : 想要一个结果 写代码 实现计算结果 # 面向对象开发 : 有哪些角色 角色的属性和技能 两个角色之间是如何交互的 # 复杂的 拥有开 ...

  4. python元类_Python基础:元类

    一.概述 Python虽然是多范式的编程语言,但它的数据模型却是 纯面向对象 的.与那些仅在语法层面声称纯OO的编程语言(如Java)相比,Python的这种纯粹性更加深入骨髓. 在Python的世界 ...

  5. Python OOP:面向对象基础,定义类,创建对象/实例,self,创建多个对象,添加对象属性,访问对象属性,__init__方法,带参数的__init__,__str__方法,__del__方法

    一.理解面向对象 面向对象是⼀种抽象化的编程思想,很多编程语⾔中都有的⼀种思想. ⾯向对象就是将编程当成是⼀个事物,对外界来说,事物是直接使用的,不用去管他内部的情况.⽽编程就是设置事物能够做什么事. ...

  6. python中exception类的_Python自定义一个异常类的方法

    如何实现自定义一个异常 python内置了许多异常类,为编写代码划定红线,才使调试代码时能及时发现错误.那么我们编写一个模块也可以为使用此模块者划定红线,来约束使用者可用哪些数据,这就需要自定义异常类 ...

  7. python系列教程_python基础学习系列教程2-进阶之路中绕不开的知识点。

    本文是在上一篇的基础上编写的,若要查看见:雨滴测试:python基础系列教程1-可能是你见过的最通俗易懂的教程​zhuanlan.zhihu.com 五. python函数 所谓的函数,就是具有特定功 ...

  8. python的基本原理_python基础1(理论基础)

    1.python是什么语言 2.python的发展史 3.python2与python3的区别 4.python的语言类型 5.python的优缺点 6.IDLE是什么 7.变量是什么 一.pytho ...

  9. python @修饰符_Python基础(面向对象之类成员与修饰符)

    本篇将介绍Python 类的成员.类成员修饰符.类的特殊成员. 类的成员可以分为三大类:字段.方法.属性 1.字段: 也可理解为变量,分为: 普通字段:保存在对象中,访问时通过"对象.字段名 ...

最新文章

  1. android开发之动画的详解 整理资料 Android开发程序小冰整理
  2. [java]窗口的创建
  3. 新手提升JSP技术能力的一点建议-调试篇
  4. 查看cpu使用率_腾讯游戏开发工程师:Linux 机器 CPU 毛刺问题排查
  5. 前端学习(3253):vs code中组件化编码
  6. windows环境下nginx的入门配置跳转tomcat
  7. linux 中阻塞与非阻塞 同步与异步
  8. LeetCode OJ:Combination Sum III(组合之和III)
  9. MYSQL5.7---ONLY_FULL_GROUP_BY 异常处理
  10. 凯尔卡C68全球版汽车电脑诊断仪
  11. James McCrae
  12. Google搜索简单介绍
  13. 动手深度学习PyTorch(三)模型选择、欠拟合和过拟合
  14. 【Windows远程连接】登录显示密码过期
  15. E45: ‘readonly‘ option is set (add to override) 解决方法
  16. 简单爬取京东商品名称、价格(仅供学习)
  17. 我的Python心路历程 第十期 (10.10 股票实战可视化历史趋势)
  18. Django 创建项目app
  19. 深度分析游戏中的随机概率
  20. KDA的新宠儿,金贝KD6,更大算力,探索无限可能

热门文章

  1. 想起了那个充满忧伤的夏天
  2. 【linux指令】sed指令
  3. oracle客户端改字符集没有用,ORACLE客户端乱码 修改Oracle客户端字符集
  4. Python项目实践:文本进度条
  5. python基础文件读写(十五)
  6. python re模块详解_python与正则表达式:re模块详解
  7. python 京东签到在哪里_python 使用selenium登陆京东签到哪京豆
  8. 武汉linux内核好找吗,Linux内核入门
  9. Unity面试题精选(3)
  10. ECS入门之Hello World