Bu yazıda temel konuları ele alacağız sınıf yöntemi ile Statik yöntem arasındaki fark Python'da ve sınıf yöntemi ve statik yöntem ne zaman kullanılır? Python'da.
Python'da Sınıf Yöntemi Nedir?
@classmethod dekoratörü yerleşiktir fonksiyon dekoratörü bu, işleviniz tanımlandıktan sonra değerlendirilen bir ifadedir. Bu değerlendirmenin sonucu fonksiyon tanımınızı gölgeler. A sınıf yöntemi tıpkı bir örnek yönteminin örneği alması gibi, sınıfı örtülü bir ilk argüman olarak alır
Sözdizimi Python Sınıfı Yöntemi:
class C(object): @classmethod def fun(cls arg1 arg2 ...): .... fun: function that needs to be converted into a class method returns: a class method for function.
- Bir sınıf yöntemi, sınıfa bağlı bir yöntemdir. sınıf ve sınıfın nesnesi değil.
- Nesne örneğini değil, sınıfı işaret eden bir sınıf parametresi aldığından sınıfın durumuna erişimleri vardır.
- Sınıfın tüm örneklerine uygulanacak bir sınıf durumunu değiştirebilir. Örneğin, tüm örneklere uygulanabilecek bir sınıf değişkenini değiştirebilir.
Python'da Statik Yöntem Nedir?
A statik yöntem örtülü bir ilk argüman almaz. Statik yöntem aynı zamanda sınıfın nesnesine değil sınıfa bağlı olan bir yöntemdir. Bu yöntem sınıf durumuna erişemez veya onu değiştiremez. Bir sınıfta mevcuttur çünkü yöntemin sınıfta mevcut olması anlamlıdır.
Sözdizimi Python Statik Yöntemi:
class C(object): @staticmethod def fun(arg1 arg2 ...): ... returns: a static method for function fun.
Sınıf yöntemi ve Statik Yöntem
Class yöntemi ile statik yöntem arasındaki fark şudur:
- Bir sınıf yöntemi cls'yi ilk parametre olarak alırken, statik bir yöntemin belirli bir parametreye ihtiyacı yoktur.
- Statik bir yöntem ona erişemez veya değiştiremezken, bir sınıf yöntemi sınıf durumuna erişebilir veya onu değiştirebilir.
- Genel olarak statik yöntemler sınıf durumu hakkında hiçbir şey bilmez. Bunlar bazı parametreleri alan ve bu parametreler üzerinde çalışan fayda tipi yöntemlerdir. Öte yandan sınıf yöntemlerinin parametre olarak sınıfa sahip olması gerekir.
- Python'da bir sınıf yöntemi oluşturmak için @classmethod dekoratörünü kullanırız ve python'da statik bir yöntem oluşturmak için @staticmethod dekoratörünü kullanırız.
Sınıf veya statik yöntem ne zaman kullanılmalı?
- Fabrika yöntemleri oluşturmak için genellikle sınıf yöntemini kullanırız. Fabrika yöntemleri, farklı kullanım durumları için sınıf nesnelerini (yapıcıya benzer) döndürür.
- Yardımcı işlevler oluşturmak için genellikle statik yöntemler kullanırız.
Bir sınıf yöntemi ve statik bir yöntem nasıl tanımlanır?
Python'da bir sınıf yöntemi tanımlamak için @classmethod dekoratörünü kullanırız ve statik bir yöntem tanımlamak için @staticmethod dekoratörünü kullanırız.
İkisi arasındaki farkı anlamak için bir örneğe bakalım. Diyelim ki bir Person sınıfı oluşturmak istiyoruz. Artık python, aşağıdaki gibi yöntem aşırı yüklemesini desteklemiyor C++ veya Java bu yüzden fabrika yöntemleri oluşturmak için sınıf yöntemlerini kullanırız. Aşağıdaki örnekte doğum yılından itibaren bir kişi nesnesi oluşturmak için bir sınıf yöntemi kullanıyoruz.
Yukarıda açıklandığı gibi yardımcı işlevler oluşturmak için statik yöntemler kullanırız. Aşağıdaki örnekte bir kişinin yetişkin olup olmadığını kontrol etmek için statik bir yöntem kullanıyoruz.
dize bölünmüş java
Basit Bir Örnek:
sınıf yöntemi:
Pythonclass MyClass: def __init__(self value): self.value = value def get_value(self): return self.value # Create an instance of MyClass obj = MyClass(10) # Call the get_value method on the instance print(obj.get_value()) # Output: 10
Çıkış
10
Statik yöntem: -
Pythonclass MyClass: def __init__(self value): self.value = value @staticmethod def get_max_value(x y): return max(x y) # Create an instance of MyClass obj = MyClass(10) print(MyClass.get_max_value(20 30)) print(obj.get_max_value(20 30))
Çıkış
30 30
Aşağıda tam Uygulama yer almaktadır
Python3# Python program to demonstrate # use of class method and static method. from datetime import date class Person: def __init__(self name age): self.name = name self.age = age # a class method to create a Person object by birth year. @classmethod def fromBirthYear(cls name year): return cls(name date.today().year - year) # a static method to check if a Person is adult or not. @staticmethod def isAdult(age): return age > 18 person1 = Person('mayank' 21) person2 = Person.fromBirthYear('mayank' 1996) print(person1.age) print(person2.age) # print the result print(Person.isAdult(22))
Çıkış:
21 25 TrueYardımcı Alan: Ç(1)
Test Oluştur