我是靠谱客的博主 兴奋大白,最近开发中收集的这篇文章主要介绍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()

 总结:

对象修改属性不影响整个类
类不可以修改实例属性
类属性:整个类都共有的属性;
实例属性:每个对象独有的属性;
类能不能访问实例属性? 不能!!
对象能访问类属性?? 能!!
 

 

 

 

    

最后

以上就是兴奋大白为你收集整理的Python3《零基础小白从入门到实战》之“类的属性和方法 ”的全部内容,希望文章能够帮你解决Python3《零基础小白从入门到实战》之“类的属性和方法 ”所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(30)

评论列表共有 0 条评论

立即
投稿
返回
顶部