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) #天津

相关文章
|
6天前
|
数据采集 存储 XML
Python爬虫定义入门知识
Python爬虫是用于自动化抓取互联网数据的程序。其基本概念包括爬虫、请求、响应和解析。常用库有Requests、BeautifulSoup、Scrapy和Selenium。工作流程包括发送请求、接收响应、解析数据和存储数据。注意事项包括遵守Robots协议、避免过度请求、处理异常和确保数据合法性。Python爬虫强大而灵活,但使用时需遵守法律法规。
|
11天前
|
传感器 物联网 机器人
定义微Python
MicroPython 是一种精简高效的 Python 解释器,专为微控制器和嵌入式系统设计,支持通过 Python 代码进行快速开发和调试。它具有低资源消耗的特点,适用于物联网设备。
91 62
|
1月前
|
索引 Python
python-类属性操作
【10月更文挑战第11天】 python类属性操作列举
16 1
|
1月前
|
Java C++ Python
Python基础---类
【10月更文挑战第10天】Python类的定义
21 2
|
1月前
|
设计模式 开发者 Python
Python类里引用其他类
Python类里引用其他类
WK
|
1月前
|
Python
Python类命名
在Python编程中,类命名至关重要,影响代码的可读性和维护性。建议使用大写驼峰命名法(如Employee),确保名称简洁且具描述性,避免使用内置类型名及单字母或数字开头,遵循PEP 8风格指南,保持项目内命名风格一致。
WK
13 0
|
1月前
|
程序员 开发者 Python
深度解析Python中的元编程:从装饰器到自定义类创建工具
【10月更文挑战第5天】在现代软件开发中,元编程是一种高级技术,它允许程序员编写能够生成或修改其他程序的代码。这使得开发者可以更灵活地控制和扩展他们的应用逻辑。Python作为一种动态类型语言,提供了丰富的元编程特性,如装饰器、元类以及动态函数和类的创建等。本文将深入探讨这些特性,并通过具体的代码示例来展示如何有效地利用它们。
35 0
|
1月前
|
Python
Python中的类(一)
Python中的类(一)
|
1月前
|
Python
Python中的类(一)
Python中的类(一)
|
1月前
|
Python
Python中的类(二)
Python中的类(二)