首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >python类class2021.9.15

python类class2021.9.15

作者头像
用户7138673
发布2022-09-22 08:27:03
发布2022-09-22 08:27:03
7910
举报
文章被收录于专栏:大大的小数据大大的小数据

发现一个现象是,数据挖掘案例并没有太多的类class,只用函数def就能跑完,但是Django等web应用就用到大量类。

木头人:Python入门 面向对象编程理论基础https://zhuanlan.zhihu.com/p/29966750

木头人:Python入门 类class 基础篇

https://zhuanlan.zhihu.com/p/30024792

木头人:Python入门 类class提高篇

https://zhuanlan.zhihu.com/p/30223570

木头人:Python入门 class类的继承

https://zhuanlan.zhihu.com/p/30239694

木头人:Python入门 面向对象编程理论基础https://zhuanlan.zhihu.com/p/29966750

面向对象编程是一种程序设计的范式; 它把程序看做不同的对象相互调用; 它是一种对具体事务的抽象模型。

代码语言:javascript
复制
面向对象编程最基本特征是类和实例。
代码语言:javascript
复制
类:<人>类的相同属性有姓名<name>、性别<sex>、年龄<age>。
代码语言:javascript
复制
实例:【小明】、【小红】、【小花】就是实例。
代码语言:javascript
复制
方法
代码语言:javascript
复制
class person(object):
   address = '中国'  # 类属性,没个实例的公共属性

   def __init__(self, name, sex, age):  # 相当于java中的构造方法
       self.name = name  # 实例属性
       self.sex = sex  # 实例属性
       self.age = age  # 实例属性

   def dance(self):  # 方法
       print(self.name, '跳了一场舞')

hong = person('小红', '女', 18)  # 实例化小红,将实例化的对象赋值给变量hong
ming = person('小明', '男', 26)
hua = person('小花', '女', 22)
print(hong)
代码语言:javascript
复制
<__main__.person object at 0x000001DF6F0916D8>

木头人:Python入门 类class 基础篇https://zhuanlan.zhihu.com/p/30024792

代码语言:javascript
复制
记住一句话:类是模板,而实例则是根据类创建的对象。
代码语言:javascript
复制
类通过 class 关键字定义,类名通用习惯为首字母大写
代码语言:javascript
复制
类的属性分为实例属性与类属性两种。
代码语言:javascript
复制
实例属性用于区分不同的实例;
类属性是每个实例的共有属性。
代码语言:javascript
复制
1、实例属性
代码语言:javascript
复制
class Circle(object):  # 创建Circle类
   def __init__(self, r): # 初始化一个属性r(不要忘记self参数,他是类下面所有方法必须的参数)
       self.r = r  # 表示给我们将要创建的实例赋予属性r赋值
代码语言:javascript
复制
2、类属性
代码语言:javascript
复制
class Circle(object):
   pi = 3.14  # 类属性

   def __init__(self, r):
       self.r = r

circle1 = Circle(1)
circle2 = Circle(2)


print('----未修改前-----')
print('pi=\t', Circle.pi)
print('circle1.pi=\t', circle1.pi)  #  3.14
print('circle2.pi=\t', circle2.pi)  #  3.14
print('----通过类名修改后-----')
Circle.pi = 3.14159  # 通过类名修改类属性,所有实例的类属性被改变
print('pi=\t', Circle.pi)   #  3.14159
print('circle1.pi=\t', circle1.pi)   #  3.14159
print('circle2.pi=\t', circle2.pi)   #  3.14159
print('----通过circle1实例名修改后-----')
circle1.pi=3.14111   # 实际上这里是给circle1创建了一个与类属性同名的实例属性
print('pi=\t', Circle.pi)     #  3.14159
print('circle1.pi=\t', circle1.pi)  # 实例属性的访问优先级比类属性高,所以是3.14111           #圆1独有的参数3.14111,其他不变
print('circle2.pi=\t', circle2.pi)  #  3.14159
print('----删除circle1实例属性pi-----')
代码语言:javascript
复制
----未修改前-----
pi=     3.14
circle1.pi=     3.14
circle2.pi=     3.14
----通过类名修改后-----
pi=     3.14159
circle1.pi=     3.14159
circle2.pi=     3.14159
----通过circle1实例名修改后-----
pi=     3.14159
circle1.pi=     3.14111
circle2.pi=     3.14159
----删除circle1实例属性pi-----
代码语言:javascript
复制
print('----删除circle1实例属性pi-----')
del circle1.pi
print('pi=\t', Circle.pi)
print('circle1.pi=\t', circle1.pi)
print('circle2.pi=\t', circle2.pi)
代码语言:javascript
复制
----删除circle1实例属性pi-----
pi=     3.14159
circle1.pi=     3.14159
circle2.pi=     3.14159
代码语言:javascript
复制
三、Python类的实例方法
代码语言:javascript
复制
在类的内部,使用 def 关键字来定义方法
代码语言:javascript
复制
#################################################方法就是调用类里面的函数!!!!!!!!!!!!!!!!
代码语言:javascript
复制
类方法必须第一个参数为 self, self 代表的是类的实例(即你还未创建类的实例),其他参数和普通函数是完全一样。
代码语言:javascript
复制
class Circle(object):
   pi = 3.14  # 类属性

   def __init__(self, r):
       self.r = r  # 实例属性

   def get_area(self):
       """ 圆的面积 """
       # return self.r**2 * Circle.pi # 通过实例修改pi的值对面积无影响,这个pi为类属性的值
       return self.r**2 * self.pi  # 通过实例修改pi的值对面积我们圆的面积就会改变

circle1 = Circle(2)
print(circle1.get_area())  # 调用方法 self不需要传入参数,不要忘记方法后的括号  输出 3.14
代码语言:javascript
复制
12.56

木头人:Python入门 类class提高篇https://zhuanlan.zhihu.com/p/30223570

代码语言:javascript
复制
一、python类中的访问限制(常用)
代码语言:javascript
复制
1、属性的访问限制,Python 私有属性
代码语言:javascript
复制
class Circle(object):
   __pi = 3.14

   def __init__(self, r):
       self.r = r

   def area(self):
       """
圆的面积
       """
       return self.r **2* self.__pi

circle1 = Circle(1)
print(Circle.__pi)  # 抛出AttributeError异常
print(circle1.__pi)  # 抛出AttributeError异常
代码语言:javascript
复制
--------------------------------------------------------------------

AttributeError                     Traceback (most recent call last)

<ipython-input-11-2678a47f14a9> in <module>()
     12 
     13 circle1 = Circle(1)
---> 14 print(Circle.__pi)  # 抛出AttributeError异常
     15 print(circle1.__pi)  # 抛出AttributeError异常


AttributeError: type object 'Circle' has no attribute '__pi'
代码语言:javascript
复制
不懂
代码语言:javascript
复制
2、方法的访问限制,Python私有访问
代码语言:javascript
复制
class Circle(object):
   __pi = 3.14

   def __init__(self, r):
       self.r = r

   def area(self):
       """
       圆的面积
       """
       return self.r**2 * self.__pi

   def __girth(self):
       """
       圆的周长
       """
       return 2*self.r * self.__pi

circle1 = Circle(2)
print(circle1.__girth()) # 抛出AttributeError异常
代码语言:javascript
复制
--------------------------------------------------------------------

AttributeError                     Traceback (most recent call last)

<ipython-input-12-cc33668b3829> in <module>()
     18 
     19 circle1 = Circle(2)
---> 20 print(circle1.__girth()) # 抛出AttributeError异常


AttributeError: 'Circle' object has no attribute '__girth'
代码语言:javascript
复制
二、Python类中的@classmethod、@staticmethod 装饰方法(比较难,需要理解)

木头人:Python入门 class类的继承https://zhuanlan.zhihu.com/p/30239694

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大大的小数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 木头人:Python入门 面向对象编程理论基础https://zhuanlan.zhihu.com/p/29966750
  • 木头人:Python入门 类class 基础篇https://zhuanlan.zhihu.com/p/30024792
  • 木头人:Python入门 类class提高篇https://zhuanlan.zhihu.com/p/30223570
  • 木头人:Python入门 class类的继承https://zhuanlan.zhihu.com/p/30239694
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档