huyuhang-python-day07

面向对象

在这里插入图片描述

  • 对象的特征——属性
    属性——对象具有的各种特征。 每个对象的每个属性都拥有特定值。 例如:顾客张浩和李明的年龄、姓名不一样。
  • 对象的特征——方法(操作,行为)
    方法——对象执行的操作(通常会改变属性的值)。 顾客对象的方法—购买商品。 收银员对象的方法----收款。

根据类来创建对象被称为实例化。

类的定义

class 类名():
	def __init__(self):
		属性
		pass
    def 方法1(self, 参数列表):
        pass

    def 方法2(self, 参数列表):
        pass

举例

class Student():
    name = None
    score = 0
    def sleep(self):
        """就是我们 之前学的的函数,第一个参数是self, 不用传参"""
        print("在呼呼的睡zzz".format())
    def study(self):
        print("嗷嗷的学习")
# 实例化对象去使用类
#对象名 = 类名()
stu1 = Student()
stu2 = Student()
# 为属性赋值
stu1.name = "胡禹航"
stu1.score = 100
print(stu1.name)
print(stu1.score)
stu1.study()
stu1.sleep()
stu2.name = "张三"
stu2.score =88

self
class Student():
    def __init__(self):
        self.name = None
        self.score = 0
    def sleep(self):
        print("{}在呼呼的睡zzz".format(self.name))
    def study(self):
        print("{}嗷嗷的学习, self的地址是{}".format(self.name, id(self)))
# self 代表的是当前类对象
# 就是哪个对象在被调用, self就是哪个对象
stu1 = Student()
stu2 = Student()
print("stu1的地址 = ", id(stu1))
print("stu2的地址 = ", id(stu2))
stu1.name = "胡禹航"
stu2.name = "张三"
stu1.study()
stu2.study()

__init__函数

class Student():
    def __init__(self, name, score, gender="男"):
        """构造方法, 类被实例化的时候会自动调用"""
        print("__init__ 被调用")
        self.name = name
        self.score = score
        self.gender = gender
    def sleep(self):
        print("{}在呼呼的睡zzz".format(self.name))
    def study(self):
        print("{}嗷嗷的学习".format(self.name))

stu1 = Student("胡禹航", 100)
print(stu1.name)
print(stu1.score)
print(stu1.gender)

自定义一个dog类

# Dog # 两个属性和方法,并且创建对象的时候初始化全部属性的时候
class dog():
    def __init__(self,name,variety):
        self.name=name
        self.variety=variety
    def bark(self):
        print('{}嗷嗷地叫唤'.format(self.name))
    def eat(self):
        print('{}卖力地吃着狗盆里的食物'.format(self.name))
dog1=dog('雪儿','萨摩')
print(dog1.name)
print(dog1.variety)
dog1.bark()
dog1.eat()

__str___方法

class Dog():
    def __init__(self,name,variety):
        self.name=name
        self.variety=variety
    def bark(self):
        print('{}嗷嗷地叫唤'.format(self.name))
    def eat(self):
        print('{}卖力地吃着狗盆里的食物'.format(self.name))
    def __str__(self):
        return "name = {}, variety = {}".format(self.name, self.variety)
dog1=Dog('雪儿','萨摩')
dog2=Dog('雨儿','萨摩')
print(dog1.name)
print(dog1.variety)
dog1.bark()
dog1.eat()
print(dog1) # <__main__.Dog object at 0x00000128A6AA6988>

ls = []
ls.append(dog1)
ls.append(dog2)
for dog in ls:
    print(dog)

属性私有

from stu import Student
### 面向对象的封装特性, 属性私有, 提供方法供访问个修改
s1 = Student("胡禹航", 100)
# s1.__sleep()
s1.study()
# print(s1.__money)
s1.setMoney(999)
print(s1.getMoney())

测试

from stu import Student
### 面向对象的封装特性, 属性私有, 提供方法供访问个修改
s1 = Student("胡禹航", 100)
# s1.__sleep()
s1.study()
# print(s1.__money)
s1.setMoney(999)
print(s1.getMoney())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值