luliyu-python-day19

# 面向对象:   Object Oriented Programming
# 面向过程: 一步一步实现
# 面向对象: 不关心过程, 将我们要实现的目的交给对象去处理
# 对象要依赖于类 , 通过类可以创建对象
# 在python中, 我们之前学过的变量都是对象, 一切皆是对象
num = 100
name = "Python"
print(type(num)) # <class 'int'>
print(type(name)) # <class 'str'>
# 类是对象的模板, 对象是类的具体实例
# 自定义类
# class 类名(父类):
#     # 方法
class Student(object):
    # 方法 : 面向对象叫方法, 面向过程是函数
    def study(self):
        print("疯狂的学习中")
# 使用类: 实例化
# 对象名 =  类名()
s1 = Student()
print(s1)
s1.study()

定义属性和使用属性

class Student(object):
    def __init__(self):
        # 定义属性
        self.name = None
        self.score = 0
    # 方法 : 面向对象叫方法, 面向过程是函数
    def study(self):
        print(f"{self.name}疯狂的学习中, 成绩为{self.score}分")
# 使用类: 实例化
# 对象名 =  类名()
s1 = Student()
# 为对象属性赋值
s1.name = "张三"
s1.score = 89
s1.study()

s2 = Student()
# 为对象属性赋值
s2.name = "李四"
s2.score = 90
s2.study()

self 是什么

class Student(object):
    def __init__(self):
        self.name = None
        self.score = 0
    def study(self):
        print(f"{self.name}疯狂的学习中, 成绩为{self.score}分")
        print(f"self的地址是{id(self)}")
    def show(self):
        print(f"姓名: {self.name}, 分数: {self.score}")
# 哪个对象被调用, self就是那个对象
s1 = Student()
s1.name = "张三"
s1.score = 89
s1.study()
print("id(s1) = ", id(s1))
s2 = Student()
s2.name = "李四"
s2.score = 90
s2.study()
print("id(s2) = ", id(s2))
s3 = s2
print("id(s3) = ", id(s3))

构造函数

# 构造函数 __init__()方法: 当这个类被实例化时会自动调用: 一般用于初始化属性
class Student(object):
    def __init__(self, name, score, gender="女"):
        # print("__init__被调用")
        self.name = name
        self.score = score
        self.gender = gender
        self.money = None
    def study(self):
        print(f"{self.name}疯狂的学习中, 成绩为{self.score}分, 性别{self.gender}")
# s1 = Student()
# s1.name = "张三"
# s1.score = 89
# s1.study()
# 创建对象的同时就将属性初始化好
s1 = Student("张三", 100)
s1.study()
s2 = Student("李四", 100)
s2.study()
s3 = Student("王五", 33, "男")
s3.study()

from math import pi
class Circle(object):
    def __init__(self, radius=1):
        self.radius = radius
    def getPerimeter(self):
        return self.radius*2*pi
    def getArea(self):
        return self.radius**2*pi
circle1 = Circle()
print(circle1.radius)
print(circle1.getPerimeter())
print(circle1.getArea())

__str__和属性私有

class Student(object):
    def __init__(self, name, score, gender="女"):
        # print("__init__被调用")
        self.name = name
        self.score = score
        self.gender = gender
        # 属性私有化
        self.__nick_name = "小小"

    def study(self):
        print(f"{self.name}疯狂的学习中, 成绩为{self.score}分, 性别{self.gender}")
    def __str__(self):
        return f"姓名 {self.name}, 成绩{self.score}"
s1 = Student("张三", 100)
s2 = Student("李四", 100)
# print(s1.__nick_name)
print(s1)
print(s2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值