Python基础 定义类和对象(类和对象2)

简介: 简单类的创建方法,对象的创建方法,类的属性,如何修改类的属性,对象如何调用方法,类属性,类方法,静态方法的使用都在文章中又演示操作


 定义简单的类

面向对象是更大的封装,在一个类中封装多个方法,这样通过这个类创建出来的对象,就可以直接调用这些方法了!

定义只包含方法的类

在python中,要定义一个只包含方法的类,语法格式如下:

用class定义类名

class 类名:

def 方法1(self,参数列表)  #方法的属性中有且仅有一个self
    pass
def 方法2(self,参数列表)   #类之外定义的def是函数,在类里面定义的def叫做方法,而且括号里必须要有self
    pass

class Student:

pass

方法的定义格式和之前学习过的函数几乎一样
区别在于第一个参数必须是self
创建对象
当一个类定义完成之后,要使用这个类来创建对象,语法格式如下:
对象变量名=类名()
第一个面向对象程序 需求: 小猫爱吃鱼,小猫要喝水

分析:
1.定义一个猫类(Cat)
2.定义两个方法ect和drink
3.按照需求--不需要定义属性

class Cat: #Cat为类的名称(类名),又一个或多个单词组成,每个单词首字母大写,其余字母小写

"""这是一个猫类"""
def ect(self):   #定义方法
    print("小猫爱吃鱼")
def drink(self):
    print("小猫要喝水")

tom=Cat() #创建类的对象

big_tom=Cat() 每个类可以有多个对象,每个对象都会开辟新的存储空间id

tom.ect() #对象调用类中封装的方法,对象名.方法名()
tom.drink() #对象调用类中封装的方法
使用self在方法内部输出每一只猫的名字

由哪一个对象调用的方法,方法内self就是哪一个对象的引用
1.在类封装的方法内部,self就表示当前调用方法的对象自己
2.调用方法时,程序员不需要传递self参数

在方法内部:
1.也可以通过self访问对象的属性
2.也可以通过self调用其他的对象方法

改造代码如下

class Cat:

def eat(self):
    print("%s 爱吃鱼"%self.name)

tom=Cat()
tom.name="Tom"
tom.eat()

lazy_cat=Cat()
lazy_cat.name="大懒猫"
lazy_cat.eat()
在日常开发中,不推荐在类的外部给对象增加属性
如果在运行时,没有找到属性,程序就会报错
对象应该包含有哪些属性,应该封装在类的内部
class Student:

def __init__(self,name,age):
    self.name=name
    self.age=age
    print("我的名字叫",name,"今年岁数是",age)

xiaoming=Student("小明",20)

xiaohong=Student("小红",18)
 类的创建

类的创建:

class Student:

native_place="吉林"  #类属性
def __init__(self,name,age):   #name,age为实例属性
    self.name=name
    self.age=age
def eat(self):
    print("我正在吃饭...")

#实例方法
def info(self):
    print("我的名字叫:",self.name,"年龄是:",self.age)
#类方法
@classmethod
def cm(cls):
    print("类方法")
#静态方法
@staticmethod
def sm():
    print("静态方法")

对象的创建,创建Student类的对象

stu1=Student("张三",20) #创建对象
stu1.info() #对象调用类方法
stu1.eat()
print("我的名字叫",stu1.name,"今年的岁数是:",stu1.age,stu1.eat)
print(stu1)
类属性、类方法、静态方法
类属性:类中方法外的变量成为类属性,被该类的所有对象所共享
类方法:使用@calssmethod修饰方法,使用类名直接访问的方法
静态方法:使用@staticmethod修饰主法,使用类名直接访问的方法
print(Student.native_place) #访问类属性
Student.cm() #调用类方法
Student.sm() #调用静态方法
stu3=Student("张三",20)
stu4=Student("李四",30)
print(stu3.native_place) #吉林
print(stu4.native_place) #吉林
Student.native_place="天津" #改变类属性
print(stu3.native_place) #天津
print(stu4.native_place) #天津

相关文章
|
2月前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
116 4
|
2月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
3月前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
385 3
|
3月前
|
Python
解决Python中AttributeError:'image'对象缺少属性'read_file'的问题策略。
通过上述策略综合考虑,您将能够定位问题并确定如何解决它。记住,Python社区很庞大,也很乐于帮助解决问题,因此不要害怕在求助时提供尽可能多的上下文和您已经尝试过的解决方案。
122 0
|
7月前
|
Python
解决Python报错:DataFrame对象没有concat属性的多种方法(解决方案汇总)
总的来说,解决“DataFrame对象没有concat属性”的错误的关键是理解concat函数应该如何正确使用,以及Pandas库提供了哪些其他的数据连接方法。希望这些方法能帮助你解决问题。记住,编程就像是解谜游戏,每一个错误都是一个谜题,解决它们需要耐心和细心。
347 15
|
7月前
|
安全 测试技术 开发者
Python中的“空”:对象的判断与比较
在Python开发中,判断对象是否为“空”是常见操作,但其中暗藏诸多细节与误区。本文系统梳理了Python中“空”的判定逻辑,涵盖None类型、空容器、零值及自定义对象的“假值”状态,并对比不同判定方法的适用场景与性能。通过解析常见误区(如混用`==`和`is`、误判合法值等)及进阶技巧(类型安全检查、自定义对象逻辑、抽象基类兼容性等),帮助开发者准确区分各类“空”值,避免逻辑错误,同时优化代码性能与健壮性。掌握这些内容,能让开发者更深刻理解Python的对象模型与业务语义交集,从而选择最适合的判定策略。
254 5
|
7月前
|
人工智能 Python
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
196 11
|
10月前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
489 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
8月前
|
存储 C语言 Python
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
179 1
|
11月前
|
Shell Python
[oeasy]python049_[词根溯源]locals_现在都定义了哪些变量
本文介绍了Python中`locals()`函数的使用方法及其在调试中的作用。通过回顾变量赋值、连等赋值、解包赋值等内容,文章详细解释了如何利用`locals()`函数查看当前作用域内的本地变量,并探讨了变量声明前后以及导入模块对本地变量的影响。最后,文章还涉及了一些与“local”相关的英语词汇,如`locate`、`allocate`等,帮助读者更好地理解“本地”概念在编程及日常生活中的应用。
130 9

推荐镜像

更多
下一篇
oss云网关配置