Python Инициализация объекта, метод _init_ - PullRequest
1 голос
/ 31 января 2020

Как я могу создать класс, если мне нужно создать объект для моего класса, как показано ниже.

Obj1 = Class()
Obj2 = Class(para1,para2,para3)

Это связано с задачей, которую мне нужно выполнить, только что начал изучать Python.

Я пытался перегрузить конструкцию, но, похоже, она не работает в Python. Может кто-нибудь сказать мне, как мне этого добиться, или технически неправильно иметь обе строки в одном коде.

Ответы [ 2 ]

2 голосов
/ 31 января 2020

Вы можете использовать *args или **kwargs

class Class1:
    def __init__(self, *args):
        pass


obj1 = Class1()
obj2 = Class1(para1,para2,para3)

или

class Class1:
    def __init__(self, **kwargs):
        pass


obj1 = Class1()
obj2 = Class1(para1=para1,para2=para2,para3=para3)

См. Это, чтобы узнать больше о *args и **kwargs

1 голос
/ 31 января 2020

Если вы установите значения по умолчанию, такие как длина = 80, вам не нужно их устанавливать. Но если вы установите значения, они будут установлены как вы sh. Следующий код демонстрирует почти то, что вы хотите.

class Rectangle:
   def __init__(self, length = 80, breadth = 60, unit_cost=100):
       self.length = length
       self.breadth = breadth
       self.unit_cost = unit_cost

   def get_perimeter(self):
       return 2 * (self.length + self.breadth)

   def get_area(self):
       return self.length * self.breadth

   def calculate_cost(self):
       area = self.get_area()
       return area * self.unit_cost
# r = Rectangle() <- this returns with default values
# breadth = 120 cm, length = 160 cm, 1 cm^2 = Rs 2000
r = Rectangle(160, 120, 2000)
print("Area of Rectangle: %s cm^2" % (r.get_area()))
print("Cost of rectangular field: Rs. %s " %(r.calculate_cost()))
...