iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python_面向对象编程
  • 720
分享到

python_面向对象编程

面向对象 2023-01-30 23:01:19 720人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

初始面向对象 一、类的实例化: 调用类产生对象的过程称为类的实例化, 实例化的结果是一个对象,或称为一个实例 class People: def __init__(self, name, age, sex)

初始面向对象

一、类的实例化:

      调用类产生对象的过程称为类的实例化,
实例化的结果是一个对象,或称为一个实例
class People:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

    def run(self):
        print('%s is running' % self.name)


obj = People('carter', 18, 'male')

# 会产生对象的名称空间,如何查看
print(obj.__dict__)
print(obj.name)
实例化做了三件事
1、先产生一个空对象
2、自动触发类内部__init__函数的执行
3、将空对象,以及调用类括号内传入的参数,一同传给__init__,为对象定制独有的属性

对象的增删改查
obj.hobby = 'beauty'  # 增加
del obj.name  # 删除
obj.age = '20'  # 修改
print(obj.__dict__)  # 查找

二、对象属性的查找顺序:先找对象自己的名称空间----》类的名称空间

class People:
    x=1
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

    def run(self): #self=obj
        print('%s is running' %self.name) #obj.name

obj=People('carter',18,'male') #People.__init__(obj,'carter',18,'male')
obj1=People('carter1',18,'male') #People.__init__(obj,'carter1',18,'male')
obj2=People('carter2',18,'male') #People.__init__(obj,'carter2',18,'male')

#1、类的数据属性:是给对象用的,而且直接共享给所有对象用的,内存地址都一样
print(People.x)
People.x=11111

print(id(People.x),People.x)
obj.x='obj================》'
print(id(obj.x),obj.x)
print(id(obj1.x),obj1.x)
print(id(obj2.x),obj2.x)


# 2、类的函数属性:也是给对象用,但是绑定给对象用的,绑定到不同的对象就是不同的
# 绑定方法,内存地址都不一样,但其实只想都是同一个功能

print(People.run)  # <function People.run at 0x00000226E7C78A60>
People.run(123123)
People.run(obj)

print(obj.run)
print(obj1.run)
print(obj2.run)

三、绑定方法的特殊之处:

    1、 绑定给谁就应该由谁来调用,
2、谁来调用就会把谁当做第一个参数传入
class People:
    x=1
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

    def run(self): #self=obj
        print('%s is running' %self.name) #obj.name

    def f1():
        print('from f1')

    def f2(self):
        pass

obj=People('carter',18,'male') #People.__init__(obj,'carter',18,'male')

obj.run()
obj1.run()
obj2.run()

print(People.f1)
People.f1()
print(obj.f1)
obj.f1() #People.f1(obj)

小练习

class People:
    def __init__(self, name, aggressiveness, life_value):
        self.name = name
        self.aggressiveness = aggressiveness
        self.life_value = life_value

    def bite(self, enemy):
        enemy.life_value -= self.aggressiveness
        print("""
        [%s]咬了一条[%s]
        狗掉血[%s]
        狗还剩血量[%s]
        """ % (self.name, enemy.name, self.aggressiveness, enemy.life_value))


class Dog:
    def __init__(self, name, aggressiveness, life_value):
        self.name = name
        self.aggressiveness = aggressiveness
        self.life_value = life_value

    def bite(self, enemy):
        enemy.life_value -= self.aggressiveness
        print("""
        [%s]咬了一个[%s]
        人掉血[%s]
        人还剩血量[%s]
        """ % (self.name, enemy.name, self.aggressiveness, enemy.life_value))


p1 = People('人', 60, 100)
d1 = Dog('狗', 80, 200)

p1.bite(d1)
d1.bite(p1)
人狗大战
from math import pi

class Circle:
    '''
    定义了一个圆形类;
    提供计算面积(area)和周长(perimeter)的方法
    '''
    def __init__(self,radius):
        self.radius = radius

    def area(self):
         return pi * self.radius * self.radius

    def perimeter(self):
        return 2 * pi *self.radius


circle =  Circle(10) #实例化一个圆
area1 = circle.area() #计算圆面积
per1 = circle.perimeter() #计算圆周长
print(area1,per1) #打印圆面积和周长
计算圆面积和周长

 




--结束END--

本文标题: python_面向对象编程

本文链接: https://www.lsjlt.com/news/181029.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作