类与面向对象中一些重要函数讲解
一、对象在文本中的输出
class Person:
def __init__(self,name,agg,live_value,money):
self.name=name
self.agg=agg
self.live_value=live_value
self.money=money
def describe():
print('%s的攻击力是%s'%(self.name,self.agg))
p=Person('bob',10,10000,100)
b=Person('tony',10,10000,100)
print(p.describe())
print(b.describe())
%s可以将要输出的内容转化为字符串形式输出,而后面的属性就是我们要输出的内容,也是对位输出。
二、init函数详解
class Person:
def __init__(self,name,agg,live_value,money):
self.name=name
self.agg=agg
self.live_value=live_value
self.money=money
def describe():
print('%s的攻击力是%s'%(self.name,self.agg))
p=Person('bob',10,10000,100)
b=Person('tony',10,10000,100)
print(p.describe())
print(b.describe())
这个函数可以叫做__init__方法,也称之为构造方法。
__init__函数是面向对象编程中的特殊方法,当创建一个类的实例时,__init__方法可以自动调用。
(1)self
class Person:
def __init__(self,name,agg,live_value,money):
self.name=name
self.agg=agg
self.live_value=live_value
self.money=money
def describe():
print('%s的攻击力是%s'%(self.name,self.agg))
p=Person('bob',10,10000,100)
b=Person('tony',10,10000,100)
print(p.describe())
print(b.describe())
举例子:1、b和p是我们定义的两个对象
2、b和p两个对象想要使用类里面的属性就需要有一个在类里面的身份
3、self就是b和p在类里面的身份,self翻译过来就是本身的意思。
4、我们要将对象传递给self才能拥有这个在类里面的身份,要将属性传递给类里面的属性才方便进行多对象输出。
这里将对象传递给self有两种方法
(1)第一种,p.describe(),这种__init__函数就自动调用这个对象了
(2)第二种,Person.describe(b),这种需要手动调用
(2)类名
我们知道定义一个类就需要有一个类名,类名的命名原则遵从我们之前讲过的大驼峰原则,当然,不用大驼峰也不会报错。
(3)面向对象的属性
面向对象的属性是由__init__函数后面的形参赋予的,这个形参是个默认值,真正具体的某个对象的参数还需要某个对象具体进行传参。
举例子:为了方便理解,我们也可以把__init__函数后面的对像想像一下,比如你在打王者荣耀的时候,是不是每个角色都有血条框,技能框,普攻键,以及回复按钮,回城按钮等。那么这是怎么实现的,为了方便代码执行,不可能一个一个角色进行编码,就是用到面向对象的方法定义了一个类,然后再通过对象传参进行实现的。当然我这说的比较浅显,肯定没我想的那么简单,仅仅举个例子作为参考。
(4)self.形参名
self.形参名=形参名,这种方式是面向对象传递属性用的。
self.形参名=固定值,这种方式就会使得无论你传递的形参名是多少,最后输出结果都是这个固定值,不实用。
__init__函数,详情参考:
【知识点】python的__init__详解_python __init__-CSDN博客
三、查看对象所有属性函数__dict__
print(p.__dict__)
讲了这么多那么到底类与面向对象有什么用?
相信大家也看出来了,用处其实主要还是在于多重对象有同一属性的时候我们不可能去给他一个一个编码出来,那么我们定义一个大类就可以实现多重对象属性的传参,减少代码量,大大提高工作效率。
小练习:
练习1:
在终端输出:
吕布,方天画戟,男,爱吃KFC
吕布,方天画戟,男,喜欢吃鸡腿
吕布,方天画戟,男,比较勇猛
老王,金箍棒,男,爱吃KFC
老王,金箍棒,男,喜欢吃鸡腿
老王,金箍棒,男,比较勇猛练习2:
定义一个圆类,计算圆的面积和周长
标签:__,name,面向对象,python,self,Person,--,init,print From: https://blog.csdn.net/2302_81156108/article/details/136689384答案:
class Person:
def __init__(self,name,weapon,like):
self.name=name
self.weapon=weapon
self.like=likedef info(self):
print('%s,%s,%s,爱吃KFC'%(self.name,self.age,self.sex))
print('%s,%s,%s,喜欢吃鸡腿'%(self.name,self.age,self.sex))
print('%s,%s,%s,比较勇猛'%(self.name,self.age,self.sex))p=Person('吕布','方天画戟','男')
p.info()
p1=Person('老李','金箍棒','男')
p1.info()from math import pi
class Cricle:
def __init__(self,r):
self.r=r
#self.pi=3.14
def area(self):
a=pi*self.r**2
return a
def perimeter(self):
p=2*pi*self.r
return pc=Cricle(5)
print(c.area())
print(c.perimeter)