Python3《零基础小白从入门到实战》之“类的属性和方法 ”

实例属性:

实例属性:个体(对象)具备的特征, 这些特征可以一样,也可以不一样。

类属性

类属性:所有的成员都具备的特征。

表示:在类定义的的下面去定义变量。

类属性 == 类变量

例如:

class Car:

    # 所有的车都具备的属性
    fadongji = True
    wheel = True
    material = ["塑料", "橡胶"]
    # 颜色,大小,牌子

获取类属性

语法格式:

实例化类名(对象).属性

class Car:

    # 所有的车都具备的属性
    fadongji = True
    wheel = True
    material = ["塑料", "橡胶"]
    # 颜色,大小,牌子

获取类属性
#print(Car.wheel)
#print(Car.material)

car=Car()
print(car.wheel)
print(car.material)

类属性的修改

语法格式:

类.变量名=新的值

例如:

class Car:

    # 所有的车都具备的属性
    fadongji = True
    wheel = True
    material = ["塑料", "橡胶"]
 

# 颜色,大小,牌子

# 类属性的修改
Car.wheel = False
print(Car.wheel)

类中函数说明

def 函数名(self,参数列表):

      函数体

说明:

(a)在类中定义函数和前面学习的定义函数基本相同,主要区别在于,函数的第一个参数是self,且不能省略

(b)在调用函数时,不需要传值

(c) self 的作用就是调用类的数据成员(变量)

例如:定义一个学生类,类名是:Student

class Student:
    def study(self):
        print('这个一个学习函数')
    def show(self,n,a):
        self.name=n
        self.age=a
        print('我是',self.name,'今年',self.age,'岁')

例如:定义一个类,类名为Person,类中包含2个函数,分别是,work(self,n),drive(self,a)

class Person:
    def work(self,n):
        self.name = n
        print('我是',self.name)
    def drive(self,a):
        self.age = a
        print('今年',self.age,'岁')

类的使用

如何使用类中的函数和变量

为了保证面向对象的"封装"性,一般不允许在类外,访问类中的实例变量,

类定义后,必须实例(化)后,才可以使用

类的实例化

语法格式:

实例化名= 类名(参数列表)

例如:

stu=Student()

例如:对学生类实例化

class Student:
    def study(self):
        print('这个一个学习函数')
    def show(self,n,a):
        self.name=n
        self.age=a
        print('我是',self.name,'今年',self.age,'岁')
stu1 = Student()
tom = Student()
lucy = Student()
.....

例如:创建一个Person类,并对Person类进行实例化 

class Person:
    def study(self):
        print('我在学习')
    def drive(self,n):
        self.name=n
        print('我叫:',self.name,'正在开车')
xiaoming = Person()

使用类的成员(变量和函数) 

语法格式:

(1)实例化名.实例变量名=值

(2)实例化名.函数名()

例如:

xiaoming.name='tom'

xiaoming.drive()

例如:访问Person类中的函数

# 实例化
xm = Person()
xm.study()
xm.drive('xm')

 例如:创建一个Worker类,并访问类中的函数

#思路:
#(a)创建一个Worker类
#(b)实例化
#(c)访问类中的函数
# 创建Worker类
class Worker:
    def set_wid(self,i):
        self.wid=i
    def set_wname(self,n):
        self.wname=n
    def get_wid(self):
        return self.wid
    def get_wname(self):
        return self.wname
    def workinfo(self):
        	print('wid=',self.wid,
'wname=',self.wname)
# 实例化
zm = Worker()
# 访问类中的函数
zm.set_wid(1001)
zm.set_wname('rose')

 例如:定义一个类Car,类中包含3个函数,show()、start()、stop(),参数提示:名称(n)、颜色(c)、价钱(p)

# 定义类
class Car:
    # 函数
    def show(self,n,c,p):
         self.name=n
         self.colour=c 
         self.price=p
         print('车名:', self.name,'颜色:',self.colour,'价钱:', self.price)
    def start(self,s):
         self.speed=s
         print('汽车的速度是:', self.speed)
    def stop(self):
         print('汽车已停止')
# 实例化
car = Car()
# 使用类
car.start(10)
car.stop()

 例如:创建一个类,Student,类中包含的函数有,study(self,n)、play(self)、drive(self,a)、get_name(self)

 return   实例化类,访问类中的函数

# 创建类
class Student:
    def study(self,n):
        self.name = n
        print(self.name,'正在学习')
    def play(self):
        print('正在运动')

    def drive(self,a):
        self.age = a
        print(self.age,'岁,可以开车')

    def get_name(self):
        return self.name
# 实例化
stu = Student()
# 使用类
stu.study('rose')
stu.play()
stu.drive(18)
name1 = stu.get_name()
print(name1)

构造函数

构造函数是用于实例化类时,初始化相关数据

语法格式:

def __init__(self,形式参数列表):

    函数体

说明:

(a)构造函数名必须是__init__

(b)self不能省略

(c)如果构造函数有形式参数列表,实例化类时,必须传入相应的数据

(d)构造函数不需要返回值

例如:创建一个类,Calc,里面包含构造函数,自定义函数,实例化类,并调用函数

# 创建类
class Calc:
    # 构造函数
    def __init__(self,x,y):
        self.a = x
        self.b = y
        print('这个是构造函数')
    # 自定义函数
    def my_add(self):
        self.s = self.a + self.b
        print('结果为:',self.s)
# 实例化
calc = Calc(3,5)
# 使用类
calc.my_add()

 例如:创建一个类Shape,里面包含构造函数,自定义函数,实例化类,调用函数

class Shape:
    # 构造函数
    def __init__(self):
        print('这是构造函数')
    # 自定义函数
    def area(self,c,k):
        self.chang=c
        self.kuan=k 
        self.s = self.chang * self.kuan   
        print('面积是:',self.s)
# 实例化
sh = Shape()
# 使用类
sh.area(5,7)

例如:创建一个类,Person,类中包含构造函数和自定义函数,实例化类,调用函数

构造函数: __init__(self,w,h)

      weight --- 体重

      height --- 身高

自定义函数: show(self)

 bmi = 体重/身高*身高

class Person:	
    def __init__(self,w,h):
        self.weight=w
        self.height=h
    def show(self):
         self.bmi = self.weight / (self.height * self.height) 
         print('bmi=',self.bmi) 
# 实例化
per = Person(65,1.75)
# 使用类
per.show()

 例如:使用面向对象的写法,实现加、减、乘、除计算器

# 定义类
class Calc:
    # 构造函数
    def __init__(self,n1,n2):
        self.num1 = n1
        self.num2 = n2

    # 自定义函数
     def calc_add(self):  # 加法函数
        self.res1 = self.num1 + self.num2
        print(self.num1,'+',self.num2,'=',
              self.res1)

    def calc_sub(self):  # 减法函数
        self.res2 = self.num1 - self.num2
        print(self.num1,'-',self.num2,'=',
              self.res2)

    def calc_mul(self):  # 乘法函数
        self.res3 = self.num1 * self.num2
        print(self.num1,'*',self.num2,'=',
              self.res3)

    def calc_div(self):  # 除法函数
        self.res4 = self.num1 / self.num2
        print(self.num1,'/',self.num2,'=',
              self.res4)
# 获取键盘输入的数值
n3 = float(input('请输入第1个数:'))
# 获取键盘输入的运算符
flg = input('请输入运算符(+ - * /):')
if flg in ('+','-','*','/'):
    # 获取键盘输入的数值
    n4 = float(input('请输入第2个数:'))
    # 实例化
    calc = Calc(n3, n4)
    if '+'== flg:
        calc.calc_add()   # 使用类
    elif '-' == flg:
        calc.calc_sub()   # 使用类
    elif '*' == flg:
        calc.calc_mul()   # 使用类
    else:
        calc.calc_div()   # 使用类
else:
    print('运算符无效')

方法

放在类里面的函数就叫方法。(method)
方法:代表类或者实例的行为。

实例方法:就是一个对象(个体) 特有的行为。  实例属性
类方法: 整个类具有的行为。
普通方法:调用, 实例方法:  obj.方法()
带有 self 的是实例方法。

类方法:类方法表示

类方法和实例方法:类方法会在方法上面加一个声明 @classmethod

静态方法(static method): 在方法当中,不需要用到对象(self), 又不需要用类(cls)
目的:当你需要把一个普通的函数放在类下面的时候。 方便管理。

例如:

class Car:
    fadongji = True
    wheel = True
    material = ["塑料", "橡胶"]

    def __init__(self, logo, color):
        print("对象产生时进行的初始化工作")
        print("类里面的", id(self))
        self.brand = logo  # brand 属性设置成 logo
        self.color = color

    def drive(self, distance=500):
        """开车"""
        print("{} 开起来非常快, 而且可以续航 {} 公里".format(self, distance))

    @classmethod
    def fly(cls):
        """飞"""
        print("{}正在飞".format(cls))

    @classmethod
    def other_class_method(cls):
        print("other")

    @staticmethod
    def baoyang():
        """和类,和对象没有关系。
        她就不应该被定义成实例方法,
        """
        print("正在保养。。。")




your_car = Car("h", "heise")
your_car.drive()

# 实例可以调用类方法。
your_car.fly()
Car.fly()


# 静态方法怎么调用
Car.baoyang()
your_car.baoyang()

类和对象的作用

类和对象可以帮我们存储各个不同的函数需要用到的共同变量

例如:

name = "single dog"
sexy = "男"
age = 5
class Dog:
    def __init__(self, name, sexy, age):
        self.name = name
        self.gender = sexy
        self.age = age
    def eating(self, food):
        # 吃什么东西
        self.food=food
        print('{} 正在吃狗粮,他的性别是 {}, 年龄是 {}岁,最喜欢的食物是 {}'.format(self.name,self.gender,self.age,self.food))

    def bark(self):
        print('{} 正在叫,显然是饿了。他的性别是 {}, 年龄是 {}岁'.format(self.name,self.gender,self.age))
    def bath(self):
        print('{} 正在洗澡,他的性别是 {}, 年龄是 {}岁'.format(self.name,self.gender,self.age))
single_dog = Dog(name, sexy, age)
single_dog.eating("粑粑")
single_dog.bark()
single_dog.bath()

 总结:

对象修改属性不影响整个类

类不可以修改实例属性

类属性:整个类都共有的属性;

实例属性:每个对象独有的属性;

类能不能访问实例属性? 不能!!

对象能访问类属性?? 能!!

 

 

 

 

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

謹言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值