Minha coluna do blog do CSDN: https://blog.csdn.net/yty_7
Endereço do Github: https://github.com/yot777/Python-Primary-Learning
8.6 Métodos de classe e métodos de instância
Após anteriormente neste capítulo, estamos todos definir uma classe, instanciar um objeto desta classe, ir para a chamada de método de classe é chamado um método de instância .
De fato, existem métodos que uma classe pode chamar diretamente sem instanciar um objeto, chamado de método de classe .
Os métodos de classe precisam ser decorados com @classmethod
Instâncias podem chamar métodos de instância e métodos de classe, mas classes só podem chamar métodos de classe.
Exemplos de métodos de classe Python :
class Animal():
#实例方法
def __init__(self): #实例方法的默认参数是self
#实例属性
self.name="小花"
def test1(self):
print(self.name)
#类方法需要加上装饰器
@classmethod
def test2(cls): #类方法的默认参数是cls
cls.num=100
print(cls.num)
cat=Animal() #Animal类的实例化对象cat
cat.test1() #实例可以调用实例方法test1
#Animal.test1() #类不能调用实例方法test1
cat.test2() #实例可以调用类方法test2
Animal.test2() #类可以调用类方法test2
运行结果:
小花
100
100
8.7 Atributos de classe e atributos de instância
Os atributos definidos na classe são colocados no construtor def __init __ () , chamado de atributos de instância .
Colocado fora do construtor, é chamado de atributo de classe .
Instâncias podem acessar atributos de instância e atributos de classe, mas classes podem acessar apenas atributos de classe.
Os atributos de classe têm um recurso importante: eles podem ser compartilhados entre diferentes objetos de instância , o que é semelhante às variáveis globais em Java .
Exemplos de atributos de classe Python :
class Person():
#类属性
num=0
def __init__(self,name):
self.name=name
n=0
n+=1 #实例属性每次调用会从初始的值开始
Person.num+=1 #类属性每次调用会保留上次调用的值,类属性的调用要加类名
print("name=",name)
print("n=",n)
print("Person.num=",Person.num)
a=Person("小明")
b=Person("小陈")
c=Person("小李")
运行结果:
name= 小明
n= 1
Person.num= 1
name= 小陈
n= 1
Person.num= 2
name= 小李
n= 1
Person.num= 3
Exemplos de variáveis globais do Java :
//Person类
public class Person {
public static int num=0;
public String name;
public int n;
public void Person(String name) {
this.name = name;
n=0;
n=n+1;
num=num+1;
System.out.println("name="+this.name);
System.out.println("n="+n);
System.out.println("Person.num="+num);
}
}
//PersonTest类
public class PersonTest {
public static void main(String[] args) {
Person a = new Person();
a.Person("小明");
Person b = new Person();
b.Person("小陈");
Person c = new Person();
c.Person("小李");
}
}
运行结果:
name=小明
n=1
Person.num=1
name=小陈
n=1
Person.num=2
name=小李
n=1
Person.num=3
8.8 Métodos estáticos
Métodos estáticos são funções em classes e nenhuma instância é necessária.
Os métodos estáticos são usados principalmente para armazenar código lógico, que pertence à classe logicamente, mas não tem nada a ver com a própria classe, ou seja, no método estático, ele não envolve as propriedades e operações do método na classe. Métodos estáticos não podem chamar propriedades e métodos na classe.
Os métodos estáticos precisam adicionar o decorador @staticmethod
Exemplos de métodos estáticos do Python :
import time
class TimeTest():
def __init__(self, hour, minute, second):
self.hour = hour
self.minute = minute
self.second = second
#普通方法
def showTime(self):
print('%s:%s:%s' %(self.hour,self.minute,self.second))
#静态方法需要加上装饰器
@staticmethod
def showCurrentTime():
return time.strftime("%H:%M:%S", time.localtime())
t = TimeTest(22, 15, 10)
t.showTime()
print(TimeTest.showCurrentTime())
运行结果:
22:15:10
16:01:21
Tutorial de referência:
Tutorial de Liao Xuefeng em Python
https://www.liaoxuefeng.com/wiki/1016959663602400
Tutorial de Java de Liao Xuefeng
https://www.liaoxuefeng.com/wiki/1252599548343744
Tutorial do Python3 | Tutorial para iniciantes
https://www.runoob.com/python3/
Se você acha que este capítulo é útil para você, seja bem-vindo a seguir, comentar e curtir! O Github recebe seu Follow e Star!