【python】1 函数、类与实例

0 两个例子

先简单整理两个简单的例子:

class Student(object):   #Student为类名
    def __init__(self, name, score):
        #强制给类里面的(实例self)上name和score属性(和函数的唯一区别)
        self.name = name
        self.score = score

    def get_grade(self):     #类的优势!
        if self.score >= 90:
            return 'A'
        elif self.score >= 60:
            return 'B'
        else:
            return 'C'

    def print_score(self):      #类的优势!
        print('%s: %s' % (self.name,self.score))

lisa = Student('Lisa', 99)
bart = Student('Bart', 59)
print(lisa.name, lisa.get_grade())
print(bart.name, bart.get_grade())
lisa.print_score()
Lisa A
Bart C
Lisa: 99
class Dog():  # 类名要大写

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def sit(self):
        '''模拟小狗蹲下'''
        print(self.name.title() + ' is now sitting')

    def roll_over(self):
        print(self.name.title() + " rolled over")


my_dog = Dog("wangzai", 3)
my_dog.sit()
my_dog.roll_over()
Wangzai is now sitting
Wangzai rolled over

1 类与实例 class与instance of class

1.1 实例变量

class Employee:  # 类名要大写

    def __init__(self, first, last, pay):
        self.first = first
        self.last = last
        self.pay = pay
        self.email = first + '.' + last + "@nwafu.edu.cn"

self为当前实例本身

#__init__方法是创建实例的初始化方法,也可称为构造方法

操作是基于实例的,实例(地址)

1.2 实例方法

    def fullname(self):
        return '{} {}'.format(self.first, self.last)


emp_1 = Employee('sun', 'tong', 3000)
print(emp_1.email,emp_1.first)
print(emp_1.fullname())
sun.tong@nwafu.edu.cn sun
sun tong

2 类变量

class Employee:  # 类名要大写
    raise_count = 1.04  # 4%

    def __init__(self, first, last, pay):
        self.first = first
        self.last = last
        self.pay = pay
        self.email = first + '.' + last + "@nwafu.edu.cn"

    def fullname(self):
        return '{} {}'.format(self.first, self.last)

    def apply_raise(self):
        self.pay = int(self.pay * Employee.raise_count)  # 类变量调用


emp_1 = Employee('sun', 'tong', 3000)
emp_2 = Employee('s', 't', 3000)
print(emp_1.email, emp_1.first)
print(emp_1.fullname())
emp_1.apply_raise()
print(emp_1.pay)
emp_2.raise_count = 2
emp_2.apply_raise()
print(emp_2.pay)

这样子是不能够单独调整raise_court,要把def apply_raise(self):里面的Employee换成self


    def apply_raise(self):
        self.pay = int(self.pay * self.raise_count)  # 类变量调用

3120
6000

这就是类变量,可以单独为每个实例单独调整

3 类方法与静态方法

@classmethod

   @classmethod
    def set_raise_count(cls, count):
        cls.raise_count = count


emp_1 = Employee('sun', 'tong', 3000)
emp_2 = Employee('s', 't', 3000)
emp_2.set_raise_count(1.04)
# Employee.set_raise_count(1.04)
print(emp_2.raise_count,emp_1.raise_count)

1.04 1.04

不能给每个实例单独调整。一般是用为创建对象的

@staticmethod

4 继承

5 类中特殊方法重写

6 属性装饰器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值