一、前言
其实自己一直都觉得自己的编程代码能力是很垃圾的,事实也的确如此,算法算法不会,开发开发不会...今天和同学交流了一些代码。发现果然自己真的很菜啊。那就巩固一下基础吧.很久没碰,这都全忘了呀。
二、类和对象
什么是类,什么是对象。对象是类定义来的,类是无实际数据的。就是一个对象的模版。还是不懂对吧。简单来说,就是类是爸爸,对象是儿子。儿子就是爸爸这个模样刻出来的。还不懂是吧?比喻:人,就是一个类,动物也是一个类,那么对象就是。张三,李四,狗,猫。
然后类和对象之间会有一个关系叫做实例化。比如,张三 是 人 这个类的 实例对象。简单来说,张三是人的实例。
那在其他语言中,实例化一个对象,通常是 new,比如PHP:
$a = new test();
而在Python中,则是直接实例化调用。
class people:
count = 0 #类属性
def __init__(self,name,age):
self.name = name #对象属性
self.age = age
people.count +=1
def who(self):
print(f"{self.name} is {self.age} years old.")
zhangsan = people("张三","80")
xiaomin = people("小名","90")
zhangsan.who()
xiaomin.who()
print(xiaoin.count)
输出:
张三 is 80 years old.
小名 is 90 years old.
2
获取类属性和实例对象属性
class people:
count = 0
def __init__(self, name, age,count):
self.name = name
self.age = age
self.count = count
people.count += 1
def getinfo(self):
print(f"{self.name} is {self.age} years old.")
def get_class_count(self):
print("类的属性count:",people.count)
def get_intance_count(self):
print("实例对象count",self.count)
zhangsan = people("张三", "80",999)
xiaomin = people("小名", "90",999)
print()
如果使用self.count,会先去找实例对象的属性,如果没有就会去找类属性。所以相要获取正确的类属性,应该直接调用people.count,但是如果是在外部就得换个方式表达。
zhangsan.__class__
代表的就是people类,那么就是zhangsan.__class__.count
就是寻求类的count属性。
print(zhangsan.__class__) #获取对象的类
print(people.__base__) #获取类的父类
输出为:
<class '__main__.people'>
<class 'object'>
还有一些内置方法,例如__name__
print(zhangsan.__class__.__name__)
print(people.__base__.__name__)
输出为:
people
object
私有属性
私有属性就是只在类的内部调用,在外部不允许调用,设置方式为在属性前面加 __ 双下划线。比如__name
class people:
count = 0
__secretcount =999
def __init__(self):
self.count+=1
def get_count(self):
print("公共属性",self.count)
def get_secret_count(self):
print("私有属性:",self.__secretcount)
zhangsan = people()
zhangsan.get_count()
zhangsan.get_secret_count()
print(zhangsan.count)
print(zhangsan.__secretcount)
这里的输出就是: