在python中可以用什么关键字来声明一个类_Python 定义类
说明
Python 教程正在编写中,欢迎大家加微信 sinbam 提供意见、建议、纠错、催更。
类是面向对象开发的核心思想,可以解决我们现实生活的复杂问题。在了解了类的基本概念,我们来学习一下怎么定义一个类。
创建一个类
可以使用 class 关键字来定义一个类:
class Student(object):
pass
类的名称需要使用驼峰格式命名(所有单词首字母大写其余字母小写),如 PlayBoy。类名后边的括号内容是它的父类,如果新创建的类没有自定义的父类,则为 object(Python3 可以不用写)。object 为 Python 所有类的默认父类,都继承于它,这样你就拥有了好多可操作的基础对象,可以使用dir(Student)查看,里边的部分方法给我们提供一个框架,我们可以按它的格式实现一些功能。
创建示例
下面我们创建一个学生类:
class Student(object):
"""这是一个学生类"""
def __init__(self, name):
self.name = name
def say(self):
print(f'我的名字是:{self.name}')
def add(self, x, y):
print(f'这个加法我会,等于{x+y}')
我们来逐行分析一下,上边的定义是了哪些细节:
类名为 Student,继承自 object,三引号里的内容为类的介绍
__init__ 是一个类的初始化方法,初始化的时候需要传入一个姓名
定义了一个 say 方法,说出自己的名字
定义了一个 add 方法用于计算加法
注意 self, 就是自身,因为在定义类时不知道具体的实例是谁,就用 self 代替这个实例
实例化
接下来,我们使用一下上边定义的类。使用时我们需要将它实例化,就是初始成一个活生生的学生,这个学生叫 tom:
tom = Student('Tom') # 实例化
tom.name
# 'Tom'
tom.say() # 让他说句话
# 我的名字是:Tom
tom.add(1, 1) # 让他计算加法
# 这个加法我会,等于2
我们也可以给 tom 修改名字:
tom.name = 'Tome' # 修改姓名
tome.math = 88 # 增加一个新的属性并赋值
内置类属性
我们可以看这个类的简介:
tom.__doc__
# '这是一个学生类'
其他的:
tom.__dict__ # 查看类的属性,是一个字典
tom.__name__ # 类名
tom.__module__ # 类定义所在的模块
私有变量
为了安全起见,有些变量是不能被外部访问和调用。比如一个 Lady 类,那么她的年龄 age 就是私有变量,调用者不能访问,实例化后自己可以定义一个。再如,下例中的车的价格,是对外保密的。
在类中两个下划线开头可以声明该属性为私有,不能在类的外部被使用或直接访问,但可以在类的内部使用:
class Car(object):
__price = 50 # 私有变量
speed = 120 # 公开变量
def sell(self):
return self.__price - 10
以上我们定义了一个汽车的类,价格是私有变量,外部不能直接访问,但对外销售时(sell方法)可以使用它,对外优惠 10w 元:
c = Car() # 实例化
c.speed
# 120
c.__price
# AttributeError: 'Car' object has no attribute '__price'
c.sell()
# 40
但是,你可以使用 对象名._类名__私有属性名(object._className__attrName) 来访问私有变量:
c._Car__price
# 50
当然,你最好写一个专门的获取和设置私有变量的方法(下例的get_price()和set_price())来让外部获取和修改这个信息:
class Car(object):
__price = 50 # 私有变量
def get_price(self):
return self.__price
def set_price(self, price):
self.__score = price
属性方法命名
单下划线、双下划线、头尾双下划三种分别是:
_foo(单下划线): 表示被保护的(protected)类型的变量,只能本身与子类访问,不能用于 from module import *
__foo(双下划线): 私有类型(private) 变量, 只允许这个类本身访问
__foo__(头尾双下划):特殊方法,一般是系统内置的通用属性和方法名,如 __init__()
注:以上属性(变量)和方法(函数)均适用。
在python中可以用什么关键字来声明一个类_Python 定义类相关推荐
- 在python中可以用什么关键字来声明一个类_python里的raise是什么意思
我们在开发当中经常会遇到一些未知或已知的错误,比如用requests发送请求时可能会出现异常,或者某个程序计算时出现分母为0的情况.面对各种奇形怪状的错误,高级语言都会有一个抛出错误的机制.在Pyth ...
- 在python中可以用什么关键字来声明一个类_3. Python基础语法
注释 我们在文言文中经常会看到注释,注释可以帮助读者对文章的理解.代码中的注释也是一样,优秀的代码注释可以帮助读者对代码的理解.当然在代码编写过程中,注释的使用不一定只是描述一段代码,也可能的是对代码 ...
- python语言用什么关键字来声明一个类_python使用什么关键字定义类
什么是类? 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 什么是方法? 类中的函数即为方法 如何定义一个类? 定义类,语法格式如下:class ...
- 在python中、如果异常并未被处理或捕捉_Python异常处理总结
本文较为详细的罗列了Python常见的异常处理,供大家参考,具体如下: 1. 抛出异常和自定义异常 Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常.如果 ...
- Python中编码问题:u'\xe6\x97\xa0\xe5\x90\x8d' 类型和 ‘\u559c\u6b22\u4e00\u4e2a\u4eba ’ 转为utf-8的解决办法...
Python中编码问题:u'\xe6\x97\xa0\xe5\x90\x8d' 类型和 '\u559c\u6b22\u4e00\u4e2a\u4eba ' 转为utf-8的解决办法 相信小伙伴们遇到过 ...
- Python中编码问题:u‘\xe6\x97\xa0\xe5\x90\x8d‘ 类型和 ‘\u559c\u6b22\u4e00\u4e2a\u4eba ’ 转为utf-8的解决办法
Python中编码问题:u'\xe6\x97\xa0\xe5\x90\x8d' 类型和 '\u559c\u6b22\u4e00\u4e2a\u4eba ' 转为utf-8的解决办法 参考文章: (1) ...
- 简述对象和类的关系python_(一)Python入门-6面向对象编程:02类的定义-类和对象的关系-构造函数-实例属性-实例方法...
一:类的定义 如果把对象比作一个"饼干",类就是制造这个饼干的"模具". 我们通过类定义数据类型的属性(数据)和方法(行为),也就是说,"类将行为和状 ...
- python面向对象类_python面向对象-类和对象
一. 类的定义 class类名(): 代码 #定义类 classWasher():defwash(self):print("洗衣服") 注意:类名要满足标识符命名规则,同时遵循大驼 ...
- python中全局变量和局部变量关键字_Python中全局变量和局部变量的理解与区别
前言 学过编程的人应该对全局变量与局部变量这两个名词并不陌生,Python也同多数编程语言一样,也有全局变量与局部变量的概念 但是与其他编程语言又有所不同 全局变量与局部变量两者的本质区别就是在于作用 ...
最新文章
- 职场:5种幼稚表现,好多工作十年的人还在犯
- python遍历循环选择题_19道Python循环遍历,while,for语句测试题,网上看到的题目,自己不看答案全部做了一次,总共3个小时左右...
- 对Ubuntu操作系统进行彻底优化
- C#设计模式学习笔记:(20)职责链模式
- 关于sqoop增量导入oracle的数据到HDFS的出现的错误总结
- SSH+Oracle10G抛Disabling contextual LOB creation as createClob() m
- 如果你正在使用CocoaPods,你的.gitignore会有什么?
- 一:计算机基础入门及介绍
- bzoj4173 数学
- 十大铁饭碗职业排行,哪些行业最吃香?外行看热闹,内行看门道
- empty怎么发音_empty是什么意思_empty在线翻译_英语_读音_用法_例句_海词词典
- 大唐集团(这个不敷衍了),js逆向:★★★★
- 全球及中国游戏耳机市场运营模式分析及需求前景预测报告2022年版
- 为 什 么 有 的 文 件 不 可 以 重 命 名
- 清除异常关闭进程的任务栏托盘区残留图标
- 异地远程访问连接家里的群晖NAS【内网穿透】
- 第2天:程序设计语言的极简介绍
- 调用layoutSubviews一定要注意别忘了调用父类
- 0904、kali、使用john破解密码、nmap扫描、抓包、安全加固、Linux加固
- arm汇编指令探究之 ldmia
热门文章
- android logo动画,Android logo与开机动画
- JS企业中征码证件校验正则
- [转贴]孙正耀退休感言
- Unhandled exception at 0x0fd238de in face_rec.exe: 0xC000001D: Illegal Instruction
- 论文图片处理技巧新思路
- php stream_socket_sendto,socket_sendto()
- 【WPF】向command中传递EventArgs参数,使用mvvmlight
- DAZ设置dForce模拟权重
- 手机显示android怎么办,安卓手机卡顿怎么办?你必须要知道的办法!
- Apollo自动驾驶开发笔记47——apollo编译报错this rule is missing dependency declarations for the following files