(1)class与C语言中的struct 形式区别
(1)class定义
例如:
class Cloth: //冒号不能缺 尽量首字母大写
brand='***'
price=200
print(self.brand)//输出brand
def 函数名(self,x,y)// class后面还可以跟def
注意self不能省去
例如:
def add (self,x,y)
result=x+y
print(result)
(2)class 调用
cal=Cloth()
#注意这里运行class的时候要加"()",否则调用下面函数的时候会出现错误,导致无法调用.
>>> cal.name
'***'
>>> cal.price
200
>>>cal.add(1,2)
3
(3)class中init功能//初始化class
init是指以理解成初始化class的变量,取自英文中
initial 最初的意思
注意:给初始值附值在实现init功能时要加上self
例如:def__init__(self,name,price,height,width,weight) //为下划线是双下划线,初识化函数
self.name=name
self.price=price
self.h=height
self.wi=width
self.we=weight
只要在运行中输入class的属性项目即可
例如 c=Calculator('bad calculator',18,17,16,15)
在输入c.name就可以得到'bad calculator'
>>>c.name
'bad calculator'
设置class中的默认属性,在def中输入即可
默认值的修改在操作页面里
例如:把c.wi进行修改只要在操作页面中输入c.wi=17,wi的属性改成了17
>>> c.wi=17
>>> c.wi
17
(2)struct和 typedef struct(自定义变量名)区别
1.先声明结构体类型,再定义结构体变量
/*图书的结构体类型声明*/
struct Book
{
......
};
struct Book为结构体类型
/*结构体变量定义*/
struct Book book1; //book1 为结构体变量。定义结构体变量
2.声明结构体类型,同时定义结构体变量
/*图书的结构体类型声明*/
struct Book
{
......
}book2; // book2 为结构体变量
struct Book为结构体类型
/*再次定义一个结构体变量 book3 */
struct Book book3; //book3 为结构体变量。定义结构体变量
4.使用typedef声明结构体类型,再定义结构体变量
/*图书的结构体类型声明*/
typedef struct Book
{
......
}strBook; // strBook为结构体类型
/*定义一个结构体变量 */
strBook book6; //book6 为结构体变量。
声明变量:
1.于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu来声明)这里的Stu实际上就是struct Student的别名。Stu==struct Student
2.另外这里也可以不写Student(于是也不能struct Student stu1;了,必须是Stu stu1;)
2.其次:
在c++中如果用typedef的话,又会造成区别:
struct Student
{
int a;
}stu1;//stu1是一个变量
typedef struct Student2
{
int a;
}stu2;//stu2是一个结构体类型=struct Student
使用时可以直接访问stu1.a
但是stu2则必须先 stu2 s2;
然后 s2.a=10;
参考文献:
https://www.cnblogs.com/qyaizs/articles/2039101.html
https://blog.csdn.net/weixin_43878533/article/details/109547708