一、笔记说明
- 本博客专栏《Python基础》的所有笔记均为.py格式文件,复制后均可无误执行(注意修改文件路径,每个人的工作区不一样)。
- 在复制代码时,若代码段标明了文件名称,即该笔记包含多个文件,请注意每个代码段标明的文件名称,并在本地创建文件夹以便于运行。
- 代码运行环境Python3.7.9,建议使用Pycharm2020.1作为编辑器,使用Anaconda3作为包管理器。
二、代码部分
class Peraon:
sex="男"
_age=18
__id=2222222
def shili(self):
print("类中的self为所有创建的实例的统称:",self)
def run(self,cmd):
print("%s要去跑步了,性别:%s!"%(cmd,Peraon.sex))
return "他累了!!!"
pe=Peraon()
cmd="邹栋"
st=pe.run(cmd)
print(st)
print(pe.sex)
pe2=Peraon()
st2=pe2.run("kc")
print(st2)
print(pe2.sex)
print("1.类中对象的引用:将拥有共同点的对象封装到一个类中,以不同参数调用有部分差异的方法")
print("2.实例化类对象相当于为类起了一个别名,一个类可以有多个别名,然后通过别名.方法/属性的形式使用类的元素")
print("3.即使在类中,要想引用本类的属性/方法依旧需要通过别名.方法/属性的形式去使用")
print("4.前方加一个下划线:弱私有属性,编程时无提示,但可以引用;前方加两个下划线:强私有属性,编程时无提示且不可以引用")
print("公有属性:%s"%(pe.sex))
print("弱私有属性:%d"%(pe._age))
print("5.",pe.shili(),"实例集合是不显示的")
print("就近原则基础:")
print("实例属性在类的方法中定义;实例属性(self.)作用于由实例引用的类元素(一般是类方法)"
"类属性(直接定义的)作用于整个类")
print("6.内部创建实例属性:在类的方法体中添加self.类属性,类方法里必须有含self.的参数且由于就近原则,该参数不可更改")
class Peraon1:
def run(self,cmd):
self.sex = "女"
print("%s要去跑步了,性别:%s!"%(cmd,self.sex))
change=Peraon1()
change.run("kc")
print("7.外部创建/更改实例属性:在外部更改/添加类的方法的self.属性,但其只做用于有self.参数的方法,且先更改/添加,后作用于类方法")
class Peraon2:
def run(self,cmd):
print("%s要去跑步了,性别:%s!"%(cmd,self.sex))
change=Peraon2()
change.sex="fwjfkcn"
change.run("kc")
change.sex="65g4v6er5"
change.run("kc")
print("8.实例方法的调用过程与self:\n"
"一般将默认会传入的那个参数命名为self\n"
"用来表示调用这个方法本身的实例对象本身\n"
"所有定义在类中的方法学名为:实例方法")
print("魔法方法")
print("9.1初始化方法:在创建实例的时候/开始运行该类的方法时执行,传入多个参数可供该类所有的方法初始化__init__(self,name,age,sex):"
"9.2析构方法:在没有用到这个实例/结束时自动运行__del__(self):")
class init1:
def __init__(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
print("初始化方法:Succeed!!!")
def __del__(self):
print("析构方法:结束了!!!")
def __str__(self):
"""返回一个对象的描述信息"""
return "名字是:%s , 年龄是:%d" % (self.name, self.age)
def __repr__(self):
"""返回一个对象的描述信息,主要用于开发者测试"""
return "Cat:(%s,%d)" % (self.name, self.age)
def run(self):
print("%s要去跑步了,性别:%s!"%(self.name,self.sex))
def eat(self):
print("%s要去跑步了,性别:%s!年龄%s"%(self.name,self.sex,self.age))
init=init1("kc",18,"男")
init.run()
init.eat()
print("10.销毁构建的实例,即结束运行,执行魔术方法__del__()")
del init
print("上方两行若执行会提示错误,因为init实例已经被销毁")
print("11.从外部修改类属性:修改对应类的实例(可为本类实例)的数据即可,但对其他实例无作用")
class feishili:
name="kc"
sex="man"
def fun(self):
print("姓名==%s,性别==%s"%(feishili.name,feishili.sex))
print("修改前:")
f=feishili()
p=feishili()
print("f的sex:",f.sex," f的name:",f.name)
print("p的sex:",p.sex," p的name:",p.name)
print("修改后:")
f.name="kfhcskj"
f.sex="kjnc"
print("f的sex:",f.sex," f的name:",f.name)
print("p的sex:",p.sex," p的name:",p.name)
print("注意:若修改类的本实例,则会影响所有由该类的本实例初始化的实例数据")
feishili.name="kfhcskj"
feishili.sex="kjnc"
print("f的sex:",f.sex," f的name:",f.name)
print("p的sex:",p.sex," p的name:",p.name)
print("12.类的3种方法:"
"静态方法[如果方法不访问类属性/实例属性的情况下定义"
"类方法[需要访问类的属性而不需要访问实例属性的情况下定义]"
"实例方法[可以同时访问类的属性,和实例属性]")
class Game:
def __init__(self,b="我是Game类的实例属性!"):
self.b=b
a="我是Game类的类属性!"
def eg(self):
print("我是Game类的实例方法!")
def shili(self):
print("\n这是一个实例方法!")
print(Game.a)
print(self.b)
self.eg()
@classmethod
def lei(cls):
print("\n这是一个类方法!")
print(cls.a)
print("不可以引用类的实例属性和实例方法!")
@staticmethod
def jingtai():
print("\n这是一个静态方法!")
print(Game.a)
print("不可以引用类的实例属性和实例方法!")
gg=Game()
gg.shili()
gg.lei()
gg.jingtai()
market='''
1. __add__(self, other) 定义加法的行为: +
2. __sub__(self, other) 定义减法的行为: -
3. __mul__(self, other) 定义乘法的行为: *
4. __truediv__(self, other) 定义真除法的行为: /
5. __floordiv__(self, other) 定义整数除法的行为: //
6. __mod__(self, other) 定义取模算法的行为: %
7. __divmod__(self, other) 定义当被 divmod() 调用时的行为
8. divmod(a, b) 把除数和余数运算结果结合起来,返回一个包含商和余数的元组 (a // b, a % b)
9.__pow__(self, other[, module]) 定义当被 power() 调用或 ** 运算时的行为
10. __lshift__(self, other) 定义按位左移位的行为: <<
11. __rshift__(self, other) 定义按位右移位的行为: >>
12. __and__(self, other) 定义按位与操作的行为: &
13. __xor__(self, other) 定义按位异或操作的行为: ^
14. __or__(self, other) 定义按位或操作的行为: |'''
print("13.魔术方法:算术运算符",market)
market='''
1. __radd__(self, other) 定义加法的行为: +
2. __rsub__(self, other) 定义减法的行为: -
3. __rmul__(self, other) 定义乘法的行为: *
4. __rtruediv__(self, other) 定义真除法的行为: /
5. __rfloordiv__(self, other) 定义整数除法的行为: //
6. __rmod__(self, other) 定义取模算法的行为: %
7. __rdivmod__(self, other) 定义当被 divmod() 调用时的行为
8. __rpow__(self, other[, module]) 定义当被 power() 调用或 ** 运算时的行为
9. __rlshift__(self, other) 定义按位左移位的行为: <<
10. __rrshift__(self, other) 定义按位右移位的行为: >>
11. __rand__(self, other) 定义按位与操作的行为: &
12. __rxor__(self, other) 定义按位异或操作的行为: ^
13. __ror__(self, other) 定义按位或操作的行为: |'''
print("14.魔术方法:反算术运算符,如果方法从左开始执行没有实现或者不支持相应的操作,"
"那么Python就会从右侧开始执行方法",market)
market='''
1. __iadd__(self, other) 定义赋值加法的行为: +=
2. __isub__(self, other) 定义赋值减法的行为: -=
3. __imul__(self, other) 定义赋值乘法的行为: *=
4. __itruediv__(self, other) 定义赋值真除法的行为: /=
5. __ifloordiv__(self, other) 定义赋值整数除法的行为: //=
6. __imod__(self, other) 定义赋值取模算法的行为: %=
7. __ipow__(self, other[, modulo]) 定义赋值幂运算的行为: **=
8. __ilshift__(self, other) 定义赋值按位左移位的行为: <<=
9. __irshift__(self, other) 定义赋值按位右移位的行为: >>=
10. __iand__(self, other) 定义赋值按位与操作的行为: &=
11. __ixor__(self, other) 定义赋值按位异或操作的行为: ^=
12. __ior__(self, other) 定义赋值按位或操作的行为: |='''
print("14.魔术方法:增量赋值运算符",market)
market='''
1. __neg__(self) 定义正号的行为: +x
2. __pos__(self) 定义负号的行为: -x
3. __abs__(self) 定义当被 abs() 调用时的行为
4. __invert__(self) 定义按位求反的行为: ~x'''
print("14.魔术方法:一元运算符",market)
三、转载说明
- 本文内容完全原创,文章完成时间2021.3.16。
- 若要转载本文,请在转载文章末尾附上本文链接:https://blog.csdn.net/qq_35772105/article/details/114904647
- 本文代码部分唯一MD5:3F1FF4779829250E85845FE14D01326B。